====== 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