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