12/27/2006: I've archived all of the notes and problem sets (ie, most of the links below don't work) and am only leaving up the syllabus for reference. If you're looking for the material, you may be able to find a link to a more recent offering of the class here or here.
The prerequisites for the class are cs55 (at Pomona) or math55 (at HMC), and cs70. Exceptions will be made for students who have taken an advanced math course and cs52/cs60, but not cs70.
The lectures are on Tuesdays and Thursdays from 2:45-4:00 in Millikan 134.
The textbook is Introduction to Algorithms, 2nd Edition by Cormen, Leiserson, Rivest, and Stein. It will also be available at Huntley bookstore. Note that the most recent version comes packaged with a CD, which is not required for this course.
| Week | Date | In class | Reading | Assignment due |
|---|---|---|---|---|
| 1 | (Tue) 8/29 | introduction, administrivia, review | ||
| (Thu) 8/31 | insertion sort loop invariants asymptotics | 2.1-2 3.1-2 | ps1a | |
| 2 | (Tue) 9/5 | divide & conquer technique mergesort solving recurrences | 2.3, 4.1-2 | ps1b |
| (Thu) 9/7 | master method quicksort worst/average/best case analysis | 4.3-4, 7.1-4 | ps2a | |
| 3 | (Tue) 9/12 | bounding problems matrix multiplication linear time sorting, order statistics | 8, 9, 28.2 | ps2b |
| (Thu) 9/14 | data structures heaps and heapsort | 10, 6 | ps3a | |
| 4 | (Tue) 9/19 | amortized analysis | 17 | ps3b |
| (Thu) 9/21 | binary search trees red-black trees | 12, 13 | ps4a | |
| 5 | (Tue) 9/26 | disjoint sets: linked lists, forests, union-by-rank, path compression, log* analysis | 21 | ps4b |
| (Thu) 9/28 | mergeable heaps: linked lists, heaps, binomial heaps, Fibonacci heaps | 19, 20 | ps5a | |
| 6 | (Tue) 10/3 | review | ps5b | |
| (Thu) 10/5 | | noon tomorrow (10/6) | ||
| 7 | (Tue) 10/10 | greedy algorithms: change, activity scheduling | 16 | |
| (Thu) 10/12 | dynamic programming: matrix multiplication, longest common subsequence | 15 | ps7a | |
| 8 | (Tue) 10/17 | | ||
| (Thu) 10/19 | dynamic programming: 0-1 knapsack graphs (review) | 15, B | ps7b | |
| 9 | (Mon) 10/23 | blocks assignment due at 11:30PM | ||
| (Tue) 10/24 | bfs, dfs
topological sort strongly connected components | 22 | ps8 | |
| (Thu) 10/26 | minimum spanning trees: greedy choice property, Prim's, Kruskal's | 23 | ps9a | |
| 10 | (Tue) 10/31 | single source shortest path: Bellman-Ford, Dijkstra's | 24 | ps9b |
| (Thu) 11/2 | all pairs shortest path | 25 | ps10a | |
| 11 | (Tue) 11/7 | network flow: Ford-Fulkerson | 26 | ps10b |
| (Thu) 11/9 | review | ps11a | ||
| 12 | (Tue) 11/14 | network flow: Edmonds-Karp, maximum bipartite matching | 26 |
|
| (Thu) 11/16 | linear programming | 29 | ps12a | |
| 13 | (Tue) 11/21 | introduction to computational complexity polynomial time reductions | 34.1-4 | ps12b |
| (Thu) 11/23 | ||||
| 14 | (Tue) 11/28 | NPC reductions more on the polynomial hierarchy | 34.5 | ps13 |
| (Thu) 11/30 | more NPC reductions approximation algorithms wrapping up, course evaluations | 34.5, 35.1 | ps14a | |
| 15 | (Tue) 12/5 | review | ||
| 16 | (Mon) 12/11 | final must be turned in by 5PM | ||