Below is an approximate list of the topics we will cover and the (planned) order for covering them. The details will undoubtedly change as the semester progresses.
Week | Lecture 1 (Mon. 11:30-1) | Lecture 2 (Wed. 11:30-1) | Lecture 3 (Fri. 11:30-12:30) | Labs |
Sept. 2-6 | No classes (Labour day) |
Course overview, administrivia, how to succeed in 160, intro to software development, languages, syntax, semantics | edit/compile/execute cycle, C++ syntax and program layout | No lab |
Sept. 9-13 | constants and variables, data types and limits, int, long, float, double, assignment and simple computation, basic use of printf | chars, scanf, format options, literal values, enums | type compatibility and conversion, more computation operators, scanf return values, examples | Lab 0: intro to linux, c++, compile/edit/run cycle, submits |
Sept. 16-20 | Libraries, function calls, parameters and return values, cstdio, cmath, cstdlib, printf, scanf formatting options | defining functions, prototypes, parameters, return values | modularity and top down design, intro to variable/constant scope | Lab 1: basic C++ programming |
Sept. 23-27 | reference parameters, | if, else if, else, comparison operators, scanf return values | clearing input buffer ("%*s"), boolean type, variables, boolean operators and logic | Lab 2: creating and using functions |
Sept. 30-Oct. 4 | switch statements, limitations, use of break | intro to recursion, lots of examples | intro to git, make, testing | Lab 3: selection (if/else, switch) |
Oct. 7-11 | Prep/practice for midterm 1 (covers labs 0-3, lectures prior to recursion) | Midterm 1 | while loops, do while loops, for loops, debugging, break, continue | Lab 4: recursion |
Oct. 14-18 | No classes (Thanksgiving) | Nested loops, scopes (global, function local, block local) | random number generation, arrays: declaration, initialization, access, loops | Lab 5: iteration (for, while, do-while loops) |
Oct. 21-25 | arrays as parameters, typical routines, uses | linear search, issorted, binary search, sorting (bubblesort) | default values for parameters, function overloading, project discussion | Lab 6: arrays |
Oct. 28-Nov 1 | null terminated char arrays, %s, fgets, cstring lib: strlen, strcmp, strcat, writing our own char[] routines | two dimensional arrays, command line arguments (argc, argv), atoi, atof, sprintf, sscanf typedefs | iostream (cin/cout/getline), string class, namespaces | Lab 7: null-terminated character arrays |
Nov. 4-8 | Prep for midterm 2 (covers labs 0-7, lecture material prior to 2D-arrays) | Midterm 2 | more practice with cin, cout, strings, getline, etc | Lab 8: cin/cout, compiling multiple files |
Nov. 11-15 | No labs/lectures (Study week) | |||
Nov. 18-22 | File I/O: reading/writing files with fgets, fprintf, fgetc, FILE* pass-by-ref | file io with ifstream, ofstream, getline, << , >> etc | intro to structs: uses, initialization, assignment, field access, as parameters | Lab 9: file i/o |
Nov. 25-29 | structs as return values, nested structs, examples, pointers, architecture and memory | pointers for pass-by-ref, scanf &, dynamic memory allocation, null pointers, wild pointers, dangling pointers, memory leaks | examples with new and delete, two-d arrays with dynamic allocation | Lab 10: structs |
Dec. 2-6 | pointers to structs, ->, intro to dynamic data structures, linked lists, abstract data types | classes, object oriented programming, string and list classes | Final exam prep (covers all labs, all lectures) | Lab 11: pointers, dynamic memory allocation/release |