Date
|
Lec #
|
Topic
|
Readings/Notes/Slides/Handouts
|
1/20
|
1
|
Intro; Computing Fibonacci numbers
|
§2; Handout from Dasgupta et al.
|
1/22
|
2
|
Fibonacci numbers contd., Divide & Conquer algorithms: searching and sorting
|
§2, §5.1
|
1/25
|
3
|
D&C: Mergesort; counting inversions
|
§5.1, §5.2, §5.3, slides
|
1/27
|
4
|
D&C: counting inversions, closest pair of points
|
§5.3, Inversion demo, §5.4
|
1/29
|
5
|
D&C: closest pair of points
|
§5.4
|
2/1
|
6
|
D&C: linear-time selection
|
Notes on Piazza, Selection demo
|
2/3
|
7
|
D&C: selection continued, integer multiplication
|
§5.5
|
2/5
|
8
|
Integer multiplication continued; Graphs
|
§3.1
|
2/8
|
9
|
Basic graph algorithms: BFS, DFS
|
§3.2, 3.3, BFS demo, DFS demo
|
2/10
|
10
|
Topological ordering, Shortest paths in graphs
|
§3.5, 3.6, 4.4
|
2/12
|
11
|
Shortest paths (Dijkstra's algorithm)
|
§4.4, 2.5, Dijkstra's demo
|
2/15
|
12
|
Minimum spanning trees
|
§4.5
|
2/17
|
13
|
MST continued
|
§4.5, 4.6, demos: Prim's, Kruskal's
|
2/19
|
14
|
Other greedy algorithms: interval scheduling
|
§4.1, 4.2
|
2/22
|
15
|
Weighted interval scheduling; Dynamic Programming
|
§6.1, 6.2, demos: unweighted IS, weighted IS
|
2/24
|
16
|
Dynamic Programming: interval scheduling contd., knapsack
|
§6.2, 6.4
|
2/26
|
17
|
DP: knapsack contd., segmented least squares
|
§6.4, 6.3
|
2/29
|
18
|
DP: segmented least squares, vertex cover on trees
|
§ 6.3, notes on Piazza
|
3/2
|
19
|
DP: longest increasing subsequence
|
§6.6, notes on Piazza
|
3/4
|
20
|
DP: edit distance (sequence alignment)
|
§6.6
|
3/7
|
21
|
DP: edit distance in linear space
|
§6.7
|
3/9
|
22
|
DP: shortest paths: Bellman-Ford
|
§6.8-10
|
3/11
|
23
|
DP: shortest paths: Floyd-Warshall
|
§6.8-10, notes on Piazza
|
3/14
|
24
|
Randomized algorithms: computing Pi
|
§13.3
|
3/16
|
25
|
Randomized algorithms: probabilities, expectations, and coin flips
|
§13.3, 13.12
|
3/18
|
26
|
Analysis of Quicksort
|
§13.5
|
3/28
|
27
|
Quicksort continued
|
§13.5
|
3/30
|
28
|
Hashing
|
§13.6
|
4/1
|
29
|
Universal Hashing, Application to string matching
|
§13.6
|
4/4
|
30
|
String matching continued, network flow
|
§7.1, 7.2
|
4/6
|
31
|
Ford-Fulkerson algorithm, Max-flow min-cut theorem
|
§7.2, 7.3, F-F demo
|
4/8
|
32
|
Correctness of Ford-Fulkerson; Edmond-Karp algorithm
|
§7.2, 7.3, notes on Piazza
|
4/11
|
33
|
Applications of network flow
|
§7.5, 7.6
|
4/13
|
34
|
More applications of network flow
|
§7.7, 7.9, 7.10, 7.11, 7.12
|
4/15
|
35
|
More applications of network flow and min cut
|
§7.7-7.12
|
4/18
|
36
|
Limits of tractability, lower bounds on sorting and searching
|
Notes on Piazza
|
4/20
|
37
|
Finish sorting lower bound; Adversarial lower bounds
|
Notes on Piazza
|
4/22
|
38
|
The classes P and NP; P vs NP
|
§8.1, 8.3
|
4/25
|
39
|
NP-completeness; reductions
|
§8.1, 8.2, 8.3
|
4/27
|
40
|
Cook-Levin theorem
|
§8.1, 8.2, 8.3
|
4/29
|
41
|
More reductions and NP-Complete problems
|
§8.4-8.6
|
5/2
|
42
|
Yet more reductions; Beyond NP
|
§8
|
5/4
|
43
|
Coping with intractability
|
|
5/5
|
44
|
Coping with intractability
|
|