Notes 1 - Getting Started
Notes 2 - Stable matching (Steps 1 and 2)
Notes 3 - Stable matching (Steps 3 and 4)
Notes 4 - Asymptotics (why and definitions)
Notes 5 - Asymptotics (practice)
Notes 6 - Graphs (fundamentals)
Notes 7 - Problem workshop
Notes 8 - Graphs (DFS)
Notes 9 - Graphs (BFS)
Notes 10 - Graphs (bipartite)
Notes 11 - Graphs (directed)
Notes 12 - Greedy algorithms (single-source shortest paths)
Notes 13 - Greedy algorithms (MST)
Notes 14 - Greedy algorithms (interval problems)
Notes 15 - Dynamic programming (foundations)
Notes 16 - Dynamic programming (knapsack)
Notes 17 - Dynamic programming (pseudo-polynomial running time)
Notes 18 - Divide-and-conquer (recursion tree)
Notes 19 - Divide-and-conquer (unified method)
Notes 20 - Problem workshop (strings)
Notes 21 - Network flow (Steps 1 and 2)
Notes 22 - Network flow (Steps 3 and 4)
Notes 23 - Intractability (P and NP)
Notes 24 - Intractability (NP-completeness)