| Week | Tuesdays | Thursdays |
| Week 1 |
9/5: Introductory lecture. |
9/7: Complexity analysis, computational models PA1 out |
| Week 2 | 9/12: Arrays |
9/14:
Linked lists and iterators |
| Week 3 | 9/19:
Standard template library |
9/21: Stacks, queues, deques, basic sorting |
| Week 4 | 9/26: Hash tables | 9/28: Scatter tables, trees |
| Week 5 | 10/3: Trees, BSTs |
10/5:
Search trees, balancing trees PA1 due PA2 out |
| Week 6 | 10/10: Tries |
10/12: B-trees |
| Week 7 | 10/17: no lecture - Fall study break | 10/19: Midterm overview |
| Week 8 | 10/24: Midterm exam | 10/26: Heaps, priority queues |
| Week 9 | 10/31:
Binomial queues, string matching |
11/2: String matching |
| Week 10 | 11/7: Sets, partitions PA2 due PA3 out |
11/9: Graph algorithms |
| Week 11 | 11/14: MST and TSP | 11/16: TSP and Greedy algorithms |
| Week 12 | 11/21: Huffman codes, Divide and Conquer, Quicksort | 11/23: no lecture - Thanksgiving recess |
| Week 13 | 11/28: Sorting overview | 11/30: Radix sort, Dynamic programming |
| Week 14 | 12/5: Dynamic programming
|
12/7:
Dynamic programming, randomness PA3 due |
| Week 15 | 12/12: Final exam overview | 12/14: |