Lecture Schedule, Fall 2021
Note: Entries for dates in the past reflect what was covered; entries for dates in the future are tentative and subject to change as the semester progresses.
Readings refer to Algorithm Design.
- [Aug 30: Lecture 1] (slides)
Introduction and overview.
Reading: Section 1.2.
- [Sept 1: Lecture 2] (slides)
HW1 out -- due Sept 14 at 11:59pm
The stable-matching problem and the Gale-Shapley algorithm.
Models of computation
and measures of algorithmic complexity. Asymptotic notation.
Reading: Sections 1.1, 2.1, 2.2, and 2.4.
- [Sept 3: Lecture 3] (slides)
The stable-matching problem and the Gale-Shapley algorithm.
Reading: Section 1.1.
- [Sept 8: Lecture 4 -- this lecture was prerecorded] (slides)
Basic data structures. Graphs and basic graph algorithms.
Reading: Sections 2.3 and 3.1.
- [Sept 10: Lecture 5] (slides)
Breadth-first search (BFS)
and applications (e.g., testing bipartiteness). DFS.
Reading: Sections 3.2, 3.3, and 3.4.
- [Sept 13: Lecture 6] (slides)
Implementing BFS and DFS. Connectivity in directed graphs.
Reading: Sections 3.5 and 3.6.
- [Sept 15: Lecture 7] (slides)
DFS, and applications to cycle detection and topological ordering.
Reading: Sections 3.5 and 3.6.
- [Sept 17: Lecture 8] (slides)
HW2 out -- due Sept 30 at 11:59pm
Topological ordering. "Greedy" algorithms. Interval scheduling.
Reading: Sections 4.1 and 4.2.
- [Sept 20: Lecture 9] (slides)
Variants of interval scheduling. Dijkstra's shortest-paths algorithm.
Reading: Section 4.4.
- [Sept 22: Lecture 10 -- this lecture was prerecorded] (slides)
Priority queues. Greedy algorithms for finding minimum spanning trees.
Reading: Sections 2.5 and 4.5.
- [Sept 24: Lecture 11] (slides)
Clustering. "Divide-and-conquer" algorithms. Mergesort.
Recurrence relations.
Reading: Sections 4.7 and 5.1.
- [Sept 27: Lecture 12] (slides)
Selection. Closest pair of points.
Reading: Sections 5.2 and 5.4; lecture notes on selection.
- [Sept 29: Lecture 13 -- this lecture was prerecorded] (slides)
HW3 out -- due Oct 10 at 11:59pm
The fast Fourier transform (FFT).
Reading: Section 5.6.
- [Oct 1: Lecture 14] (slides)
Exponentiation and integer/matrix multiplication. Dynamic programming.
Reading: Sections 5.5 and 6.1. (The material on exponentiation and Strassen's algorithm is not covered in the book.)
- [Oct 4: Lecture 15] (slides)
Weighted interval scheduling.
Reading: Section 6.2.
- [Oct 6: Lecture 16] (slides)
The knapsack problem. Longest common subsequence.
Reading: Section 6.4; lecture 11 of Dave Mount's lecture notes.
- [Oct 8: Lecture 17] (slides)
RNA secondary structure. Sequence alignment.
Reading: Sections 6.5 and 6.6.
- [Oct 11: Lecture 18] (slides)
Shortest paths with negative weights. The Bellman-Ford algorithm. Negative-weight cycles.
Reading: Sections 6.8 and 6.10 (through page 304 only).
- [Oct 13]
Midterm exam -- no lecture
The exam will cover the material through (and including) the class of Oct. 8.
- [Oct 15: Lecture 19] (slides)
HW4 out -- due Oct 31 at 11:59pm
The Bellman-Ford algorithm and distributed routing. Network flow.
Reading: Sections 6.9 and 7.1.
- [Oct 18: Lecture 20] (slides)
Network flow and the Ford-Fulkerson algorithm.
Reading: Section 7.1.
- [Oct 20: Lecture 21] (slides)
Max-flow/min-cut.
Reading: Section 7.2.
- [Oct 22: Lecture 22] (slides)
Optimizing the Ford-Fulkerson algorithm. Applications of network flow.
Reading: Sections 7.3 and 7.5 (through page 370).
- [Oct 25: Lecture 23] (slides)
Further applications of network flow. Circulations with demands (and capacity lower bounds).
Reading: Sections 7.6 and 7.7.
- [Oct 27: Lecture 24] (slides)
Applications of circulations with demands.
Reading: Section 7.8.
- [Oct 29: Lecture 25] (slides)
P and NP.
Reading: Section 8.3 (but note that our treatment does not line up exactly with that in the book).
- [Nov 1: Lecture 26] (slides)
HW5 out -- due Nov 14 at 11:59pm
NP-completeness. Reductions and NP-completeness of circuit-SAT.
Reading: Sections 8.1, 8.2, and 8.4 (but note that our treatment does not line up exactly with that in the book).
- [Nov 3: Lecture 27] (slides)
NP-completeness of 3-SAT.
Reading: Section 8.4.
- [Nov 5: Lecture 28] (slides)
Additional NP-complete problems.
Reading: Section 8.5.
- [Nov 8: Lecture 29] (slides)
Additional NP-complete problems. The class coNP.
Reading: Section 8.9.
- [Nov 10: Lecture 30] (slides)
Dealing with NP-hardness: fixed-parameter tractability and handling special cases.
Reading: Sections 10.1 and 10.2.
- [Nov 12: Lecture 31] (slides)
Dealing with NP-hardness: approximation algorithms.
Reading: Section 11.1.
- [Nov 15: Lecture 32] (slides)
Dealing with NP-hardness: approximation algorithms.
Reading: Sections 11.2 and 11.4 (only the simplified version of the algorithm covered in class).
- [Nov 17: Lecture 33] (slides)
HW6 out -- due Dec 9 at 11:59pm
PSPACE and PSPACE-completeness. QSAT.
Reading: Sections 9.1 and 9.2.
- [Nov 19: Lecture 34] (slides)
Two-player games. Planning.
Reading: Sections 9.3-9.5.
- [Nov 22: Lecture 35] (slides)
Randomized algorithms. Probability review. Contention resolution.
Reading: Sections 13.1, 13.3, and 13.12.
- [Nov 29: Lecture 36] (slides)
Randomized algorithms: contention resolution II.
Bayes's law and random testing.
Optional reading: Broder and Kumar.
- [Dec 1: Lecture 37] (slides)
The probabilistic method. A randomized min-cut algorithm.
Reading: Section 13.2.
- [Dec 3: Lecture 38] (slides)
A randomized Max-3SAT algorithm. Markov's bound. The coupon-collector problem.
Reading: Sections 13.3 and 13.4.
- [Dec 6: Lecture 39] (slides)
Hash tables and load balancing; Chernoff bounds.
Universal and 2-universal hash functions.
Reading: Sections 13.6, 13.9, and 13.10 (through page 774).
- [Dec 8: Lecture 40] (slides)
Two-level hashing.
Parallel algorithms.
Reading: Uzi Vishkin's notes (you are only responsible for what we covered in class).
- [Dec 10: Lecture 41] (slides)
Parallel algorithms.
Reading: Uzi Vishkin's notes (you are only responsible for what we covered in class).
- [Dec 13: Lecture 42] (slides)
Advanced topics: linear programming.
Reading: Michel Goemans's lecture notes; Jeff Erickson's lecture notes.
- [Dec 21]
Final exam
The final will be available from 7:50-10:15am on Gradescope
The exam will cover the material through (and including) the class of Dec. 10.
Web Accessibility