[ lectures :: grading :: midterm :: final questions ]

Contact Information

Professor: Brent Heeringa
Email: heeringa [at] cs.williams.edu
Office: Thompson Chemistry Laboratory 306
Phone: 413.597.4711

Course Information

Course Classroom: Thompson Chemistry 206
Course Time: 11.00 - 11.50
Office Hours: Monday and Wednesday from 15.30-17.00
Teaching Assistant: Alexandra E. Constantin
Teaching Assistant Office Hours:Tuesday20.00-23.00
Course Text: Algorithm Design by Jon Kleinberg and Éva Tardos. The text is available at Water Street Books or online

Course Description

From the course catalog:

This course investigates methods for designing efficient and reliable algorithms. By carefully analyzing the structure of a problem within a mathematical framework, it is often possible to dramatically decrease the computational resources needed to find a solution. In addition, analysis provides a method for verifying the correctness of an algorithm and accurately estimating its running time and space requirements. We will study several algorithm desgin strategies that build on data structures and programming techniques introduced in Computer Science 136, including induction, divide-and-conquer, dynamic programming, and greedy algorithms. Particular topics of study include graph theory, computational geometry, string processing, approximation algorithms, and advanced data structure. In addition, we will provide an introduction to complexity theory and the complexity classes P and NP.

We all have problems. This course is not only about finding solutions to the problems, but rather, good solutions--even provably good solutions. We begin by developing techniques for algorithm analysis--mathematical methods for putting bounds on time and space complexity. We'll study asymptotic analysis, recurrence relations, and some probability theory. Next, we'll delve into problem solving strategies like divide and conquer, randomization, and implicit data structures. We'll highlight these techniques with specific sorting algorithms including mergesort, quicksort, and heapsort. Now that we've got some practice solving problems and analyzing our solutions, we'll try our hand at some algorithms on advanced data structures like graphs and balanced trees. Probing further we'll learn some advanced algorithm design techniques like dynamic programming, linear programming, and maybe even fast Fourier transforms. Finally, we'll look at a set of problems for which no known polynomial time solutions exist. We'll talk about ways of identifying these seemingly different problems, and proving that they are all, in some way, intimately related.

Course Grading

Problems will be assigned at each lecture and due two lecture periods later. For example, during a normal week if I assign a problem on Monday, it would be due at the beginning of class on Friday. Most problems will be worth 5 points each, but occasionally I may assign problems worth more points (particuarly if the problem is challenging). Only your top 200 attempted points worth of problems count toward your grade. I expect this covers all extenuating circumstances such as illness and natural disasters. Problems count 50% toward your grade; a take-home midterm is worth 25% of your grade and a 24-hour, cumulative final is worth another 25% of your grade.

Some points of clarification:

Midterm

A few notes on the midterm:

Here is the midterm in pdf and in raw TeX.

Lectures

Lecture 1 :: 02 February 2007 :: Stable Matchings

Lecture 2 :: 05 February 2007 :: Basic Algorithm Analysis

Lecture 3 :: 07 February 2007 :: Choosing the right data structures

Lecture 4 :: 09 February 2007 :: Graphs

Lecture 5 :: 12 February 2007 :: Graphs

Lecture 6 :: 14 February 2007 :: Interval Scheduling

Lecture 7 :: 19 February 2007 :: Shortest Paths and Spanning Trees

Lecture 8 :: 21 February 2007 :: Analysis of Union-Find

Lecture 9 :: 23 February 2007 :: Prefix-Free Codes

Lecture 10 :: 26 February 2007 :: Integer and Matrix Multiplication

Lecture 11 :: 28 February 2007 :: FFTs

Lecture 12 :: 02 March 2007 :: Recurrence Relations