| Week 1 |
Graphs, Depth-First Search, Breadth-First Search, Connected Components, Digraphs, Topological Sort, Strong Components |
| Week 2 |
Minimum Spanning Trees, Edge-Weighted Graphs, Kruskal's Algorithm, Prim's Algorithm, Shortest Paths, Dijkstra's Algorithm, Acyclic Shortest Paths, Seam Carving |
| Week 3 |
Maxflow, Mincut, Ford-Fulkerson Algorithm, Maxflow-Mincut Theorem, Maxflow Applications, Strings in Java, Key-Indexed Counting, LSD/MSD Radix Sort, 3-Way Radix Quicksort, Suffix Arrays |
| Week 4 |
R-Way Tries, Ternary Tries, Character-Based Operations, Substring Search, Brute-Force Substring Search, Knuth-Morris-Pratt Algorithm, Boyer-Moore Algorithm, Rabin-Karp Algorithm |
| Week 5 |
Regular Expressions, NFA Simulation & Construction, Regular Expression Applications, Run-Length Coding, Huffman Compression, LZW Compression, Burrows-Wheeler |
| Week 6 |
Reductions, Designing Algorithms, Lower Bounds, Classifying Problems, Linear Programming, Brewer's Problem, Simplex Algorithm, Intractability, Search Problems, P vs NP, NP-Completeness, Coping with Intractability |