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 |