Lecture Notes

Notes 1, 1/24: PDF -- Algorithm Overview, Integer Multiplication

Notes 2, 1/26: PDF -- Fibonacci Numbers, Asymptotic Notation, MergeSort

Notes 3, 1/30+2/1: PDF -- Graphs, DFS, 2SAT

Notes 4, 2/6: PDF -- BFS, Dijkstra's algorithm

Notes 5, 2/8: PDF -- More shortest paths algorithms

Notes 6, 2/13 + 2/15: PDF -- Minimum Spanning Tree

Notes 7, 2/22: PDF -- Union-Find

Notes 8, 2/27 + 3/1: PDF -- Greedy algorithms

Notes 9, 3/1: PDF --Divide and Conquer

Notes 10, 3/6: PDF --Fast Fourier Transform

Notes 11, 3/8: PDF --Memoization / Dynamic Programming

Notes 12, 3/20: PDF --Randomization: Freivalds' algorithm, QuickSort, QuickSelect

Notes 13, 3/22: PDF --Skip lists, Hashing

Notes 14, 3/27+4/3: PDF --Static dictionary, Karger's algorithm, randomized 2SAT

Notes 15, 4/3+4/5: PDF --Network flow

Notes 16, 4/10: PDF --Baseball and linear programming

Notes 17, 4/12: PDF --NP-Completeness

Notes 18, 4/17+4/19: PDF --Approximation algorithms