Lecture Notes from Michael Mitzenmacher's
Algorithms course at Harvard, Spring 2002

These notes are by Michael Mitzenmacher, based on earlier notes by Christos Papadimitriou and Umesh Vazirani.

 

Notes 1, 2/10: PS -- Algorithm Overview, Fibonocci

Notes 2, 2/12: PS -- Induction, Recurrences, Mergesort

Notes 3, 2/17: PS -- Graphs, DFS, Top. Sort, SCCs

Notes 4, 2/19: PS -- BFS, Shortest paths

Notes 5, 2/24: PS -- MSTs, Prim's, Kruskal's

Notes 6, 3/2: PS -- Disjoint set data structure

Notes 7, 3/4: PS -- Greedy Algorithms

Notes 8, 3/9: PS -- Divide and Conquer

Notes 9, 3/11: PS -- Dynamic Programming

Notes 10, 3/16: PS -- Hashing 1

Notes 11, 3/18: PS -- Hashing 2

Notes 12, 3/23: PS -- Document Similarity

Notes 13, 4/6: PS -- Primality Testing

Notes 14, 4/6: PS -- Cryptography

Notes 15, 4/8: PS -- 2-SAT

Notes 16, 4/8: PS -- Linear Programming

Notes 17, 4/15: PS -- Network Flows and Games

Notes 18, 4/20: PS -- NP Completeness

Notes 19, 4/22: PS -- Local Search

Notes 20, 4/27: PS -- Approximation Algorithms

Notes 21, 4/29: PS -- LCA, RMQ

Notes 22, 5/4: PS -- Suffix Trees