CSCI 160 Topics

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