Algorithm Design Paradigms
A 18-module path through algorithm design paradigms, in study order from foundations to the frontier.
Modules
- The Divide and Conquer Paradigm
- The Master Theorem for Recurrences
- Karatsuba and Fast Multiplication
- The Greedy Method and Optimal Substructure
- Exchange Arguments for Greedy Correctness
- Introduction to Dynamic Programming
- Memoization versus Tabulation
- The 0/1 Knapsack Problem
- Longest Common Subsequence
- Edit Distance
- Backtracking and State-Space Search
- Branch and Bound
- Naive String Matching and the Matching Problem
- Knuth-Morris-Pratt String Matching
- Rabin-Karp and Rolling Hashes
- Suffix Trees and Suffix Arrays
- Introduction to Randomized Algorithms
- Introduction to Hashing