| 1 | Introduction to algorithms | 1-27 | tbd |
| 2 | Asymptotic notation | 31-40 | tbd |
| 3 | Logarithms and more | 41-58 | tbd |
| 4 | Elementary data structures | 65-75 | tbd |
| 5 | Dictionary data structures | 76-92 | tbd |
| 6 | Hashing | 93-102 | tbd |
| 7 | Applications of sorting | 109-114 | tbd |
| 8 | Heapsort/Priority Queues | 115-126 | tbd |
| 9 | Mergesort/Quicksort/Binsort | 127-151 | tbd |
| 10 | Data structures for graphs | 197-211 | tbd |
| 11 | Breadth-first search | 212-220 | tbd |
| 12 | Topological sort/connectivity | 221-234 | tbd |
| 13 | Minimum spanning trees | 243-256 | tbd |
| 14 | Shortest paths | 257-266 | tbd |
| 15 | Exploiting graph algorithms | 267-275 | tbd |
| 16 | Combinatorial search | 281-288 | tbd |
| 17 | Program optimization | 289-302 | tbd |
| 18 | Elements of dynamic programming | 307-325 | tbd |
| 19 | Examples of dynamic programming | 326-336 | tbd |
| 20 | Limitations of dynamic programming | 337-344 | tbd |
| 21 | Dynamic programming review | | tbd |
| 22 | Reductions | 355-360 | tbd |
| 23 | Easy reductions | 361-368 | tbd |
| 24 | Harder reductions | 369-372 | tbd |
| 25 | The NP-completeness challenge | 373-382 | tbd |