Union College CSC-10X: CS Core Skills
Skills Overview
Each course covers at least the following topics:
- functions
- variables
- assignment
- conditionals
- loops
- recursion
- lists/arrays
- file reading/writing
- binary numbers and ASCII
- strings and string methods
- dictionaries
In-depth Skills List
What do we expect from students who pass one of the intro courses with a
C- or better?
This document assigns levels of competency to each skill in our list of
objectives for intro courses. We use the following levels of competency:
-
- The student can usually solve this
type of problem on his/her own with only minor errors.
-
- The student can make an attempt which
goes in the right direction at solving this type of problem, but
he/she may need some help to reach a solution.
-
- The student knows that he/she has seen similar
problems before, but may not be able to find a solution without
considerable help.
- Fundamental Programming Concepts
- Basic Syntax and Semantics
-
-
The student will know that programming languages have a
strict syntax that distinguishes valid from invalid
expressions and statements and a well-defined
semantics. (They don't necessarily need to know the terms
syntax and semantics.)
- Control flow and basic control structures
-
- Students will be able to simulate the default control
flow of the language they are learning.
- Students know the syntax and semantics of if-statements
and while/for loops.
- Students will be able to simulate the control flow of a
given if/while/for.
- Students will be able to select appropriate classes of
control primitives for specific problems (e.g.,
conditionals vs. loops).
- Functions and parameter passing
-
- Students will be able to read documentation for
instructor/system provided functions
- Students will be able to use instructor/system defined
functions in their own code
- Students know what a function signature is and will be
able to identify its various components (return type,
function name, parameters)
- Students will be able to write an original procedure
(e.g. side-effect only, no return) given an algorithm
specification. Note: the focus here is on knowing what
function definitions look like, not the problem solving
involved.
- Students will be able to write an original function
given an algorithm specification. Note: the focus here is
on knowing what function definitions look like, not the
problem solving involved.
- Simple I/O
-
- Students will be able to print statements to the
console
-
- Students will be able to read data from files
- Structured decomposition
-
- Given the description of a problem students will be
able to identify sub-problems that would be implemented
as functions.
- Students will be able to perform one layer
decomposition on their own and two layer decomposition
when given the primitives.
- Variables, types, expressions, and assignment
-
- Students will be able to write statements that (declare
and) assign a value to a variable.
- Given a programming language expression,
students will be able to determine its type.
-
- Given a piece of code, students will be able to
identify the variables and trace them and their value
through the program. In particular, they will be able to
identify where the initial assignment happens and where
the value may change because of a reassignment. They will
be able to explain what appens to the value of a variable
when it is passed as a parameter to a function that may
change the value it assigns to that parameter name, and
they will have an understanding of scope and be able to
explain what happens if a different variable of the same
name is declared/used elsewhere in the program.
- Students will be able to identify the variables needed
to specify an algorithm to solve a given problem.
- Algorithms and Problem-Solving
- Debugging strategies
-
- Students will be able to recognize and use the error
messages produced by the compiler/interpreter to correct
syntax errors.
-
- They will be able to implement the following debugging
strategies to identify and correct logic and runtime
errors: hand tracing using their algorithms, echo
printing, use of comments to remove lines of code,
modular testing and stepwise refinement.
- Students will be able to design tests and define test
data to determine if errors exist in control
statements.
- Given a program statement, and a program with known
errors, they will be able to indentify the error and
hypothesize as to the location of the error in the
code.
-
- Students will also be given a demonstration of using a
debugger.
- The role of algorithms in the problem-solving process / The
concept and properties of algorithms / Implementation strategies
for algorithms / Problem-solving strategies
-
- Students will be able to list the reason(s) for
developing algorithms in the design process.
- They will be able to translate their
algorithms into a high level programming language.
-
- They will write algorithms, in pseudo code, that
include control structures and include an appropriate
level of detail.
- Fundamental Data Structures
- Primitive Types
-
- Students will be able to explain the difference between
data types
-
- Student will be able to choose the appropriate data type
for a given problem.
- Arrays / Records
-
- Students will be able to write code that accesses a
specific element of a given array/record.
-
- Students will be able to to identify when to use a
collection data type (list, array) or a key-value pair
based data type (record, association list).
- Students will be able to write code that traverses an
array.
- Students will understand that arrays have a size, they
will understand how the size and the index of the last
element are related, and they will be able to predict
what happens if their program tried to access an element
beyond the size of the array.
- Data representation in memory
-
- Students will be able to explain how the memory content
changes when variables get declared/assigned/and
reassigned using diagrams based on the metaphor of
variables as names for containers.
- Fundamental computing algorithms
- Fundamental search algorithms
-
- Given a list and an element, students will be able to
explain (in English, no code required) how to search for
the element using sequential search
-
- Students will be able to implement sequential
search.
-
- Given a list and an element, students will be able to
explain (in English, no code required) how to search for
the element using binary search
- Students will be able read and explain a given
implementation of binary search.
- Introduction to language translation
- Comparison of interpreters and compilers
-
- Students will be able to explain the
functionality of interpreters and compilers and the difference
between them.
- Abstraction mechanisms
- Modules in programming languages
-
- Students will be able to use built-in libraries.
- Students will be able to explain the advantages of
modularization.
- Students will have seen programs consisting of multiple
modules/files.
- Digital logic and digital systems
- Overview of computer architecture
-
- Students will be able to explain the function of CPU,
memory, and secondary storage and the interaction between
them.
- Machine level representation of data
- Numeric data representation and number bases / Bits, bytes
and words / Representation of nonnumeric data (character code,
graphical data)
-
- Students will be able to convert (small) integers in
base 10 representation into binary representation and the
other way round.
- Students will be able to determine how many different
values can be represented using a given number of
bits.
- Students will be able to explain how bits are grouped
into bytes.
- Students will be able to explain how bytes are used to
encode characters.
- Overview of operating systems
- Role and purpose of the operating system
-
- Students will be aware that the operating system is
software that is responsible for managing access to CPU
time, memory and files.
- Software tools and environments
- Programming environments
-
- Students will be able to list the tasks (e.g., compile,
run, ...) that the programming environment they are using
is doing for them.
- Students will be aware that they could use a plain text
editor to write their programs.
- Students will have seen a program be compiled and run
from the command line.
- Students will be able to list the advantages of using a
programming environment over a plain text editor.
- Recursion
- The concept of recursion / implementation of recursion
-
- Students will be able to list the characteristics of a
recursive solution.
- Students will be able to formulate (in English) a
recursive solution to a given problem.
-
- Students will be able to implement a recursive solution
given a specification of the algorithm in English.
- Social Context of computing
- Introduction to the social implications of computing
-
- Students will be able to list and explain several ways
in which computing affects people's lives (both
positively and negatively).