CSC 373: Lectures

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.

Course outline

Lecture/tutorial topics

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.

Learning objectives

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):


Valid HTML 4.01 Transitional