6.1220: Design and Analysis of Algorithms
Algorithmic Design Paradigms: Greedy, Divide-and-Conquer, Dynamic Programming, Randomized/Approximation/Sublinear/Sketching/Streaming/Online Algorithms
Beyond Worst-Case Analysis: Probabilistic Analysis (e.g. Monte Carlo and Las Vegas Algorithms), Amortized Analysis, Competitive Analysis, Dynamic/Static Data Structures (e.g. Hashing)
Cool Topics: Linear Programming, Game Theory (e.g. Nash Equilibria), Multiplicative Weights, Gradient Descent, Markov Chains, Fast Fourier Transform, NP-Completeness
Materials on MIT Canvas (see also MIT’s official course description)