Topic Learning Objectives Priority

General Usage of Computer for Programming

  • concept of an “operating system”
  • use of ssh to access strauss
  • interpreter
    • interpreter vs. compilation: running in interpreter vs running a script
  • editor
  • Unix
    • shell commands: cp, mv, rm, cd, script, pwd, chmod, ls, cat, mkdir, rmdir, more
    • directories
    • command line arguments
  • basic html and chmod to create simple web pages

Computer architecture

  • parts of the computer (computer organization)
  • registers,cache,ram,disk
  • file system - directories and files

Programming Constructs

  • expressions
  • statements
  • data types
  • variables
  • functions
    • pre-defined function libraries, including testing library
    • recognize function calls
    • design recipe
    • functional decomposition
    • write function using design recipe
    • distinguish between function header, body, and call
    • distinguish between actual and formal parameters/arguments
    • return value
    • parameters
    • scope
    • pass-by-reference-value vs. pass-by-value
    • nested
    • recursive
    • parameter default values
    • optional args
    • lambda
    • doc strings (python)
  • assignment statements
  • operators, operator precedence and associativity, order of operations
  • truth values, boolean expressions, logical operators;
    • relation to zero
  • conditionals (if, if/else, switch, ternary operator)
  • iteration
    • definite iteration (for loops, while loops)
    • indefinite iteration (while loops)
    • comprehensions (python)
  • Data
    • strings and string functions
    • lists/arrays
    • dictionaries (python)
    • structs
    • addresses
    • pointers
    • constants
    • simple file I/O
    • classes
      • constructor
      • str, repr

linear search binary search sorting: either selection or insertion sort; either merge or quicksort finding min, max, count, sum, average of a sequence of data values

(from either an input file or an array).	 	 	 	 

menu driven programs linked lists

Optional:

  • DeMorgan's law
  • binary, hex, octal, decimal number systems
  • structured programming (sequence, selection, and repetition are sufficient, goto not needed. Bohm and Jacopini, Dijkstra letter).

Resources: http://docs.python.org/tutorial/controlflow.html#intermezzo-coding-style