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. We will be using Jeff Erickson's notes.
Week 1
- Meeting 1: The peasant multiplication algorithm we discussed is covered in Section 1.2 of Chapter 1 and Section 0.2 of Chapter 0.
- Meeting 2: Towers of Hanoi is discussed in Section 1.3, and Mergesort in Section 1.4. Our discussion in class will inevitably have some stylistic differences from the text.
- Reading: Relevant parts of Chapter 1.
Week 2
- Meeting 1: Analysis of the mergesort recurrence. Quicksort and its analysis. Sections 1.4 and 1.5. Our method for solving mergesort recurrence involved rexursion trees, which are discussed in more generality in Section 1.7.
- Meeting 2: Exponentiation from Section 1.10, and Subset Sum from Section 2.3.
- Reading: Relevant parts of Chapters 1 and 2.
Week 3
- Meeting 1: Discussion of Homework 2. String Segmentation from Section 2.5.
- Meeting 2: Longest Increasing Subsequence from Section 2.6.
- Reading: Relevant parts of Chapter 2.
Week 4
- Meeting 1: Memoization and dynamic programming for LIS. Dynamic programming for LIS is covered in Section 3.6 of the text, but memoization is not. The earlier sections in Chapter 3 cover memoization in the context of Fibonacci sequences.
- Meeting 2: Dynamic Programming for String Segmentation.
- Reading: Relevant parts of Chapter 3.
Week 5
- Meeting 1: Dynamic programming for subset sum. Maximum Independent Set (MIS) in Trees, from Section 3.10 of the text.
- Meeting 2: Dynamic programming for MIS on trees. A detour into data structures.
Week 6
- Meeting 1: Data structure discussion continued. Basic Graph Algorithms (Chapter 5).
- Meeting 2: The Whatever search algorithm. Breadth First Search, Depth First Search, and Prim's Minimum spanning tree algorithm as its instantiations.
Week 7
- Meeting 1: Dijkstra's shortest path algorithm as a special case of Whatever first search. (Still doing Chapter 5). Review for Midterm 1.
- Meeting 2: Midterm 1
Week 8
- Meeting 1: Finding connected components in undirected graphs (Section 5.6) Shortest paths in graphs. Sections 8.1 to 8.3.
- Meeting 2: Proof that Ford's generic algorithm terminates and is correct. Section 8.3.
Week 9
- Meeting 1: The Bellman-Ford Algorithm from Section 8.7.
- Meeting 2: Breadth-First-Search (8.4) and Dijkstra's Algorithm (8.6)
Week 10
- Meeting 1: Beginning of our unit on randomized algorithms. Sample spaces, events, random variables, expectation, linearity of expectation. Some examples where we use linearity of expectation to calculate expectation. Notes for some of this is posted on ICON.
- Meeting 2: Analysis of the expected running time of randomized quicksort.
Notes on ICON.
Week 11
- Meeting 1: Analysis of the expected running time of randomized selection. Notes on ICON.
- Meeting 2: Balanced geometric partitioning via random sampling.
Week 12
- Meeting 1: Discussion of sample midterm.
- Meeting 2: Midterm 2
Week 13
- Meeting 1: We begin Chapter 12 on NP-hardness, which is the subject of the rest of the course. Decion problems, and examples. The classes P and NP. Introduction of Circuit Satisfiability, SAT, Indpendent Set, and Hamilton Path. Why they are in NP.
- Meeting 2: The P vs NP question. NP-hardness and its significance. The Cook-Levin Theorem: Circuit SAT is NP-hard.
Week 14
- Meeting 1: NP-completeness. Establishing NP-hardness of SAT, 3SAT, and Independent Set.
- Meeting 2: Showing NP-hardness for some example problems: Maximum Diverse Subset and Lecture planning. These illustrate how we may solve homework and exam problems.
Week 15
- Meeting 1: NP-hardness of Vertex Cover. More examples of NP-hardness reductions.
- Meeting 2: Review, where we consider problems from sample final.