The tentative schedule for the full semester is here.

- Class 27: Review.

- Class 26: Machine Learning II.

Reading: Chapter 2 of this book by Shalev-Shwartz and Ben-David

- Class 25: RSA, Machine Learning I.

Reading: Chapter 31.7 of CLRS and Chapter 1 of this book by Shalev-Shwartz and Ben-David.

- Class 24: Private Key encryption and Diffie-Hellman.

Reading: this lecture note by Boaz Barak.

- Class 23: Approximation II & Randomized Algorithms.

Reading: Chapter 35 of CLRS, and this lecture note by Jin-Yi Cai.

- Class 22: Approximation Algorithms.

Reading: Chapter 35 of CLRS.

- Class 21: Search to Decision Reduction, Starting Approximation Algorithms.

Reading: Chapter 34 of CLRS.

- Class 20: Proving Cook-Levin, NP-Complete Reductions .

Reading: Chapter 34 of CLRS.

- Class 19: Complexity Classes P, NP, NP-hardness and Karp Reductions.

Reading: Chapter 34 of CLRS.

- Class 18: Algorithms for Linear programming, Zero-Sum Games and the Min-Max Theorem .

Reading: These notes by Tim Roughgarden.

- Class 17: Max matching and liniear programming .

Reading: Chapters 26.3 and 29 of CLRS.

- Class 16: Finishing Maximum Flow and Mininum Cut.

Reading: Chapter 26 (parts 1,2) of CLRS.

- Class 15: Floyd-Warshall all pairs shortest paths. Starting Max flow.

Reading: Chapter 25 (part 2) of CLRS.

- Class 14: Bellman-Ford (single source) shortest paths.

Reading: Chapter 24 (parts 1,2).

- Class 13: Graph Traversal: BFS, Dijkstra's single source shortest paths.

Reading: Chapter 24.3 of CLRS.

- Class 12: Minimum Spanning Trees: Prim, Graph Traversal: DFS.

Reading: Chapter 22 of CLRS.

- Class 11: Minimum Spanning Trees: Kruskal.

Reading: Chapter 23 of CLRS.

- Class 10: Greedy Algorithms & Graphs.

Reading: Sections 16.1 and 16.2, B.4 of CLRS.

- Class 9: Dynamic Programmming.

Reading: Chapter 15 of CLRS.

- Class 8: Universal Hashing, A full construction.

Reading: Chapter 11 of CLRS.

- Class 7: Red-Black Trees. Starting Hashing.

Reading: Chapter 13 of CLRS.

- Class 6: Binary search trees.

Reading: Chapter 12 of CLRS.

- Class 5: Stack, queue, and heap (sort).

Reading: Chapters 10 and 6 of CLRS.

- Class 4: Quicksort, basics of probability.

Reading: Chapter 7 and Appendix C of CLRS. Optional (suggested, but not mandatory) reading: Chapter 5 of CLRS.

- Class 3: Matrix multiplication, Master theorem.

Reading: Chapter 4 of CLRS.

- Class 2: Insertion sort and merge sort.

Reading: Chapter 2 of CLRS.

- Class 1: A bird's view, and foundations.

Reading: Chapters 1 and 3 of CLRS.