This page summarizes the lectures and mentions the suggested reading assignments. This summary is quite brief, and its intention is to help the student and instructor recollect what was covered. It is no substitute for participating in the lectures.

## Week 1

• 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.

## Week 2

• Lecture 1: Median finding
• Lecture 2: Integer Multiplication. Besides the notes mentioned above, this is also covered in Section 5.5 of the text.

## Week 3

• Lecture 1: Closest pair from Section 5.4 of the text. Some old lecture notes on the material.
• Lecture 2: Weighted Interval Scheduling from Section 6.1 -- formulating a recursive approach, and specializing it to ensure that the number of distinct recursive subproblems solved is polynomial.

## Week 4

• Lecture 1: Memoizing the recursion and analyzing the running time. And an iterative, dynamic programming approach. Introduction to a segmentation problem related to Section 6.3 of the text, but not quite the same thing.
• Lecture 2: Completing the algorithm for the segmentation problem. The knapsack problem from Section 6.4.

## Week 5

• Lecture 1: Shortest paths in graphs, from Section 6.8. Motivating it as a problem that other problems can be solved with.
• Lecture 2: Completing the algorithm for shortest paths.

## Week 6

• Lecture 1: Introduction to probability (Sample space, events, independence). One reference is Section 13.12. Contention Resolution Protocol from Section 13.1
• Lecture 2: Completing the Contention Resolution Analysis. Global Min-Cuts from 13.2 and Chapter 13 of Jeff Erickson's lecture notes.

## Week 7

• Lecture 1: Completing the analysis of the global min-cut. Probability amplification by repeating. Amplifying the probability more efficiently (see Jeff Erickson's notes).
• Lecture 2: Random variables, expectation, and calculations for some illustrative examples. Section 13.3 of the text.

## Week 8

• Lecture 1: Coupon collection (13.3), and the expected time for the randomized median finding algorithm (13.5).
• Lecture 2: Midterm.

## Week 9

• Lecture 1: Expected time analysis of quicksort. Notes from Motwani and Raghavan's book posted within `content' tab of icon.
• Lecture 2: Hashing.

## Week 10

• Lecture 1: Hashing completed -- Section 13.6 is a reference.
• Lecture 2: Network Flow. Slides from textbook on ICON.

## Week 11

• Lecture 1: Network flow continued.
• lecture 2: Network Flow - choosing good augmenting paths (Section 7.3)

## Week 12

• Lecture 1: Network flow applications (bipartite matching and baseball elimination). Slides from textbook on ICON.
• Lecture 2: Network flow applications (baseball elimination and image segmentation)

## Week 13

• Lecture 1: 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 2: Polynomial time reducibility and efficient verifiers. Slides are here . P, NP, and NP-completeness. NP-completeness of CNF-SAT and independent set.

## Week 14

• Lecture 1: NP-completeness and its significance. NP-completeness of CNF-SAT and independent set. NP-completeness of subset sum (from slides in ICON)
• Lecture 2: NP-completeness of 3-Colorability.

## Week 15

• Lecture 1: Two proofs for the NP-completeness of Set Cover -- One via a reduction from 3CNF-SAT, and the other via a reduction from Independent Set to Vertex Cover and from Vertex Cover to Set Cover. A very brief survey of approaches to NP-complete problems.
• Lecture 2: Problem Solving.