Following is a tentative schedule of topics for this course:
Topic | Reading | Assignment(s) Due |
Mon, Jan 9: Introduction | Section 1.1 | |
Wed, Jan 11: Introduction to Algorithms | (Handout) Levitin, Sec. 1.1-1.3 | |
Fri, Jan 13: First problem: Stable Matching | Sec. 1.1 | |
Mon, Jan 16: (No classes) | ||
Wed, Jan 18: Five Representative Problems | Sec. 1.2 | |
Fri, Jan 20: Algorithm Analysis [Slides: pdf, ppt] | Sec. 2.1 | |
Mon, Jan 23: Orders of growth | Sec. 2.2, 2.4 | |
Wed, Jan 25: Implementing Stable Matching | Sec. 2.3 | |
Fri, Jan 27: Graphs [Slides: pdf, ppt] | Sec. 3.1, 3.2 | |
Mon, Jan 30: Graph traversals | Sec. 3.3, 3.4 | |
Wed, Feb 1: Directed graphs, topological ordering | Sec. 3.5, 3.6 | |
Fri, Feb 3: Greedy algorithms: Interval scheduling | Sec. 4.1 | |
Mon, Feb 6: Greedy algorithms: More scheduling | Sec. 4.2 | |
Wed, Feb 8: Shortest Paths | Sec. 4.4 | |
Fri, Feb 10: Minimum spanning trees | Sec. 4.5, 4.6 | |
Mon, Feb 13: Clustering | Sec. 4.6, 4.7 | |
Wed, Feb 15: Huffman Codes | Sec. 4.8 | |
Fri, Feb 17: Divide and conquer: Merge sort | Sec. 5.1 | |
Mon, Feb 20: Recurrence relations, inversions | Sec. 5.2, 5.3 | |
Wed, Feb 22: Closest pairs of points | Sec. 5.3, 5.4 | |
Fri, Feb 24: Closest pairs | Sec. 5.5 | |
Mon, Feb 27: Integer multiplication | ||
Wed, Mar 1: Review/Catch-up | ||
Fri, Mar 3: ***MIDTERM EXAM*** | ||
Mon, Mar 6: Dynamic programming: More scheduling | Sec. 6.1, 6.2 | |
Wed, Mar 8: Segmented Least Squares | Sec. 6.3 | |
Fri, Mar 10: Subset sums and knapsacks | Sec. 6.4 | |
Mar 13-17: (No classes) | ||
Mon, Mar 20: RNA secondary structure | Sec. 6.5 | |
Wed, Mar 22: Sequence alignment | Sec. 6.6 | |
Fri, Mar 24: Shortest paths | Sec. 6.8 | |
Mon, Mar 27: More shortest paths | Sec. 6.9 | |
Wed, Mar 29: Polynomial-time reductions | Sec. 8.1 | |
Fri, Mar 31: Reductions and satisfiability | Sec. 8.2 | |
Mon, Apr 3: Definition of NP | Sec. 8.3 | |
Wed, Apr 5: NP-completeness | Sec. 8.4 | |
Fri, Apr 7: Sequencing problems | Sec. 8.5 | |
Mon, Apr 10: Partitioning, graph coloring | Sec. 8.6, 8.7 | |
Wed, Apr 12: Numerical problems | Sec. 8.8 | |
Fri, Apr 14: Backtracking | Levitin, Sec. 11.1 | |
Mon, Apr 17: Branch-and-bound | Levitin, Sec. 11.2 | |
Wed, Apr 19: Approximation algorithms | Levitin, Sec. 11.3 | |
Fri, Apr 21: Wrap-up | Levitin, Epilogue |