| Week | Topics | Assessment |
|---|---|---|
| 1 | Course Intro; Procedural Programming | Lab 1. Homework 1. |
| 2 | Arrays; Specs; Tests; Searching | Lab 2. Practice Test. |
| 3 | Sorting; Allocation; Practice Midterm Solutions | Lab 3. |
| 4 | Test overview; Recursion; Complexity | Week 4 test. Lab 4. |
| 5 | Data Structures, Variants | Lab 5. |
| 6 | Classes and Objects; Exceptions; Abstract Data Types | Lab 6. Homework 2 |
| 7 | Testing; Data Abstraction; Collections; Parametric Polymorphism | Lab 7. Practice Test 2 |
| 8 | Practice Midterm Solutions, Q+A | Lab 8. Week 8 test. |
| 9 | Test overview; Hashing and Hash tables. | Lab 9. Homework 3 |
| 10 | Stacks, Queues, Graphs and Graph algorithms. | Lab 10. |
| 11 | Inheritance, LSP; Expression Problem and Functional Programming | Lab 11. |
| 12 | Exam Revision | Homework submission closes. Practice Exam 1 (Lecture). Practice Exam 2 (Lab) |