- Lecture 1: The problem of counting inversions in an array, and a divide-and-conquer algorithm for the problem based on modifying mergesort. Section 5.3 of the book.
- Lecture 2: The discussion on quicksort, median finding, and integer multiplication follows Sections 1.4--1.7 of Jeff Erickson's lecture notes.
- Reading assignment for Week 1: First Sections 5.1--5.4 of text. Reinforcement Problems: 2 (quite easy if you followed Lecture 1) and 3 (requires some creativity) of Chapter, now also included in Homework 1.

- Lecture 1: Integer Multiplication (Section 5.5) and finding the closest pair of points (Section 5.4).
- Lecture 2: Completing the closest pair algorithm. Weighted Interval Scheduling from Section 6.1. Some old lecture notes on the closest pair algorithm , and the weighted interval scheduling problem . Continued here.
- Reading for Week 2: Sections 5.4 and 5.5.

- Lecture 1: Developing the algorithm for weighted interval scheduling. Introduce a segmentation problem related to Section 6.3 of the text, but not quite the same thing.
- Lecture 2: Completing the algorithm for segmentation, an application to a weighted set cover problem, the Knapsack problem from Section 6.4. Some old notes on knapsack.
- Reading for Week 3: Sections 6.1, 6.2, 6.3, and 6.4. Second homework to be posted.

- Lecture 1: Completing Knapsack algorithm, and beginning dynamic programming for finding shortest paths in graphs, Section 6.8.
- Lecture 2: Completing Shortest paths. Introduction of the quadtree based algorithm for the all-nearest neighbors problem in the plane.
- Reading: Section 6.8

- Lecture 1: Completing the quadtree based algorithm for all-nearest neighbours. Finally, here are the notes.
- Lecture 2: Sample Spaces, Events (Section 13.12) , the randomized algorithm for Contention Resolution from Section 13.1.
- Reading: Sections 13.12 and 13.1.

- Lecture 1: The edge contraction algorithm for minimum cuts, from Section 13.2 of the text and Lecture 13 of Jeff Erickson's lecture notes.
- Lecture 2: Improvements to the basic edge contraction algorithm. Random variables, expectations, linearity of expectation, waiting for the first heads, coupon collection, from Section 13.3 of the text.
- Reading: Sections 13.2 and 13.3.

- Lecture 1: Expected time analysis of Quicksort. The analysis roughly follows Section 9.7 of Jeff Erickson's lecture notes. Discussion of Hashing from Section 13.6 of text.
- Lecture 2: Hashing, expected running time of operations.

- Lecture 1: Tail Inequalities: Markov, Chebyshev, and Chernoff.
- Lecture 2: Midterm

- Lecture 1: Applying Chernoff to throwing balls into bins (Section 13.10). Introducing the packet scheduling problem (Section 13.11).
- Lecture 2: Randomized algorithm for packet scheduling and its analysis (Section 13.11).

- Lecture 1: The maximum flow and minimum cut problems. The flow value lemma, and the lemma that says that the value of any flow is upper bounded by the capacity of any cut. The slides for our discussion of maximum flow are posted within the ``content'' link in the ICON page for this course.
- Lecture 2: Residual networks, Ford-Fulkerson algorithm, Max-Flow = Min-Cut.

- Lecture 1: Correctness of Ford-Fulkerson, running time analysis, capacity scaling algorithm to improve the running time. Please see the slides.
- Lecture 2: Applications of max-flow and min-cut: Bipartite matching, image segmentation.

- Lecture 1: Applications of max-flow and min-cut: Baseball elimination
- Lecture 2: CNF-Satisfiability and Maximum Independent set problems. Reduction of perfect matching to CNF satisfiability, maximum bipartite matching to maximum independent set, and CNF satisfiability to maximum independent set. This marks our transition to studying NP-completeness, from Chapter 8 of the book.

- Lecture 1: Polynomial time reducibility and efficient verifiers. Slides are here.
- Lecture 2: P, NP, and NP-completeness. NP-completeness of CNF-SAT and independent set.

- Lecture 1: NP-completeness of 3-colorability, Vertex Cover, and Set Cover.
- Lecture 2: Dealing with NP-completeness: Approximation algorithms, heuristics, exact algorithms that work well on practical or structured instances. Approximation algorithms for (unweighted) Vertex Cover and Set Cover.

- Lecture 1: Improved exponential algorithms for vertex cover (Section 10.1) and CNF satisfiability (Exercise 10-2). Local search for Max-Cut (Section 12.4)
- Lecture 2: Local search for vertex cover and Nash equilibria for a network formation game. (Chapter 12)