Lecture 
Topic 
Suggested readings/references 

1 (9/3) 
Introduction, reductions, and efficient recursion 
Revise chapters 2, 3, 4, 5, 6, 8 from Kleinberg and Tardos 
2 (9/8) 
Efficient recursion continued 
Jeff E.'s notes on Divide & Conquer, Dynamic Programming
Shuchi's notes on Divide & Conquer, Dynamic Programming

3 (9/10) 
Random variables and events, Testing matrix multiplication 
Notes: here, here

4 (9/15) 
More on random variables, Analysis of quicksort 
Notes on Quicksort 
5 (9/17) 
Polynomial Identity Testing, Counting via sampling, tail bounds 
Notes on PIT, tail bounds 
6 (9/22) 
ChernoffHoeffding bounds, More on sampling 
Notes on Chernoff bounds, streaming 
7 (9/24) 
DNF counting, Load balancing 
Notes on DNF counting, Load balancing 
8 (9/29) 
Power of two random choices 
Sinclair's notes 
9 (10/1) 
Approximation algorithms 
Intro and Vertex cover, Set cover, Linear programming 
10 (10/6) 
Linear programming, LP rounding 
Linear Programming, Randomized rounding 
11 (10/8) 
LP rounding contd., Derandomization 
Nick Harvey's notes 
12 (10/20) 
Derandomization: conditional expectation, pessimistic estimators 
Nick Harvey's notes 
13 (10/22) 
Dimensionality Reduction (JohnsonLinderstrauss) 
Nick Harvey's notes,
Anupam Gupta's notes 
14 (10/27) 
Graph sparsification 
Nikhil Bansal's notes, Nick Harvey's notes 
15 (10/29) 
Probabilistic method; Lovasz Local Lemma 
Alistair Sinclair's notes 
16 (11/3) 
Algorithmic (constructive) Local Lemma 
Nick Harvey's notes, Tim Roughgarden's notes 
17 (11/5) 
Online algorithms and competitive analysis, Weighted majority algorithm 
Shuchi's notes 
18 (11/12) 
Hedge, Follow The Perturbed Leader 
Bobby Kleinberg's notes, Tim Roughgarden's notes (skip to §3) 
19 (11/17) 
FTPL continued, LP Duality, Primaldual analysis 
Shuchi's notes 
20 (11/19) 
Primal Dual analysis continued 
Shuchi's notes 
21 (11/24) 
Online matching 
Bobby Kleinberg's notes 
22 (12/1) 
Online matching continued; Streaming: estimating frequency moments 
Tim Roughgarden's notes, Amit Chakrabarti's notes 
23 (12/3) 
Streaming algorithms 
