This should closely represent the lab/lecture/assignment/project plan for the semester.
Supplementary links and discussions for various aspects of the lecture material can be found here.
Week | Mon/Wed lab | Monday lecture | Wednesday lecture | Friday lecture |
Week 1 (Sept. 2-6) | No lab | No lecture (Labour day) | Course intro, administrivia, programming in the large | Intro to linux |
Week 2 (Sept. 9-13) | Lab 1: linux, git submit | Version control, git, linux | Software specifications, development life cycles and phases | |
Week 3 (Sept. 16-20) | Lab 2: git, version control | Shells and shell programming, bash | ||
Week 4 (Sept. 23-27) | Lab 3: bash scripting I | Design principles: abstraction, encapsulation, modularity, reuse, coupling, cohesion, refactoring | Code standards | |
Week 5 (Sept. 30-Oct. 4) | Lab 4: bash scripting II | Compilation, linking, loading | Separate compilation in C/C++: headers and #includes | Automated builds, makefiles and make |
Week 6 (Oct. 7-11) | Lab 5: Basic makefiles with C/C++ gcc/g++ | C vs C++, C macros and pre-processor | Defensive coding techniques, safety and security issues | Midterm prep |
Week 7 (Oct. 14-18) | No lab (Thanksgiving) | No lecture (Thanksgiving) | Midterm | C++ and the STL (standard template libraries) |
Week 8 (Oct. 21-25) | Lab 6: macros, templates, STL | Debugging and diagnostic practices and tools, gdb | Bug reporting, logging, and follow-up; intro to testing | project working session |
Week 9 (Oct. 28-Nov. 1) | Lab 7: gdb and debugging | staging, development, production; test planning, unit testing | test stubs and drivers, scripted test automation | |
Week 10 (Nov. 4-8) | Lab 8: stubs/drivers (C++) | Test case development: project | Product deployment, scripted updates and installs | Service oriented architectures,
Test development exercise |
Study week (Nov. 11-15) | No labs/lectures (study week) | |||
Week 11 (Nov. 18-22) | Lab 9 Wed: test automation (bash/C++) | Profiling tools: gprof, valgrind | Code inspections, reviews, audits | Code inspection exercise |
Week 12 (Nov. 25-29) | Lab 10: gprof and profiling | GUIs: zenity in bash | GUIs: gtk in C++ | more gtk, localization |
Week 13 (Dec. 2-6) | Lab 11: gtk and C++ | Unicode | working sessions for project? | Review, prep for final |