University of Waterloo CS 466/666 - Fall 2010
Design and Analysis of Algorithms
Lectures
Home Lectures Admin Assignments Project Resources Exams

To help in motivation, the lectures are organized around problems instead of techniques. We usually devote more than a lecture to each problem and then explore different ideas to devise an efficient algorithm. Along the way, we will indeed encounter new design techniques and variations on the analysis model (themes like amortization, randomization, approximation, online computation, etc., as promised in the handbook description), but the main emphasis is how to think about problems.

Lecture Topics
: (this list of specific problems is subject to change; though the techniques as given in the course outline will all be covered ... through at least one application)


Problem of Sept 14,16: Finding triangles in graphs and transitive closure

This topic gives the opportunity to review a number of basic algorithm design techniques/issues in the context of developing methods for determining the number of triangles in a graph. These include divide and conquer, NP-hardness and reductions..
Problem of Sept 21, 23: Optimal binary search trees
This topic gives the opportunity to review dynamic programming, taking advantage of a "telescoping series" that improves runtime, (amazingly good) greedy approximation algorithms and amortized runtime.
Problem of Sept 28, 30: Convex hull

Problem of Oct 5, 7, 12: Priority Queues

Problem of Oct 14, 19: Union Find

Problem of Oct 21, 26: Selection

Problem of Nov 2: Primality Testing

Problem of Nov 4, 9: NP-Completeness
and SAT

Problem of Nov 11, 16, 18, 23: Dealing with NP-Completeness: Approximation Algorithms

Problem of Nov 25: Online Algorithms
Problem of Nov 30, Dec 2: More dealing with NP-Hardness