Week | Topics | Readings | Tutorial | Notes |
---|---|---|---|---|
1 | Course Introduction Greedy algorithms for interval scheduling "staying ahead" proof technique |
Section 4.1 | no tutorial held | lecture summary |
2 | Greedy algorithms: interval scheduling, MSTs Exchange proof technique |
Section 4.5, 4.4 | Dijkstra's shortest-path algorithm | lecture summary |
3 | Greedy algorithms: MST, Knapsack Introduction to dynamic programming |
Section 11.8 | Making change (in Canada) | lecture summary |
4 | Dynamic programming: rock climber's problem, matrix chaining |
Section 6.1, 6.2 | Making change (in general) | lecture summary |
5 | Dynamic programming: weighted interval scheduling all-pairs shortest paths |
Section 6.8, 6.6 | All-pairs shortest paths | lecture summary tutorial summary |
6 | Term Test 1 RNA secondary structure |
study! (reference Section 6.5) |
Test review, DP review | lecture summary |
7 | Introduction to divide-and-conquer: integer multiplication, Master Theorem, sorting |
Section 5.1, 5.3, 5.5 | Sequence alignment (DP, D&C) | lecture summary |
-- | Reading week - no class | |||
8 | Divide-and-conquer: selection, closest points Network flow introduction |
Section 7.1, 7.2 | Sequence alignment (D&C) | lecture summary |
9 | Network flow and augmenting paths | Section 7.3, 7.11 | Solving problems with network flow | lecture summary |
10 | Network flow: project selection Linear programming |
Section 7.11, 11.6 | Assignment review, network flow review | lecture summary |
11 | Term Test 2 Linear programming formulation: political problem |
study! | Test review, LP formulation, blending problem |
lecture summary |
12 | Linear programming: vertex cover as an IP Approximation algorithms: vertex cover, TSP |
Section 11.6, 11.1 | Simple knapsack, load balancing | lecture summary |
13 | Approximation algorithms Randomized algorithms |
Section 11.3, 13.1 | Randomization; simplex method for LP | lecture summary |
-- | Final exams -- April 17-29 -- check exam schedule |
All readings are from the course textbook, Kleinberg and Tardos, Algorithm Design.
Some topics are also covered in Cormen, Leiserson, Rivest and Stein, Introduction to Algorithms (2nd edition), McGraw-Hill (2001). I am told that CLRS may be available free to UofT students through the library website.
Many of the lecture notes included here are adapted from Francois Pitt's CSC 373 notes.
The following topics will be covered in this course, probably in the order listed. For each topic, the approximate number of weeks required to cover that topic is listed as well as a list of the relevant sections in the textbook.
By the end of this course, students should be familiar with standard algorithm design techniques (divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization):
|