15-451 Course Information, Spring 2007

This course is about designing algorithms for computational problems, and how to think clearly about analyzing correctness and running time. The main goal of this course is to provide the intellectual tools needed for designing and analyzing your own algorithms for new problems you need to solve in the future. Algorithm design tools we will discuss include Dynamic Programming, Divide-and-Conquer, Data Structure design principles, Randomization, Network Flows, Linear Programming, and the Fast Fourier Transform. Some analytical tools we will discuss and use include Recurrences, Probabilistic Analysis, Amortized Analysis, and Potential Functions. We will also discuss a bit of Complexity Theory (which looks at the intrinsic difficulty of computational problems) as well as Cryptography and Algorithmic Game Theory.

Manuel Blum, mblum+@cs, Wean 4113, x8-3742. Office hours: 2:30-3:30 Monday, 2-3(or until there are no questions) TTh

Teaching Assistants:
Brent Bryan, bryanba@cs, NSH 3123, x8-3076. Office hours: 10-11 Friday
Elisabeth Crawford, alg.section.b@gmail, Wean 8201, x8-3898. Office hours: 9:30-10:30 Thursday
Michelle Goodstein, mgoodste@cs, Wean 4126, x8-1188. Office hours: 3:30-4:30 Thursday
Virginia Vassilevska, alg.section.b@gmail, Wean 3706, x8-1023. Office hours: 7-8pm Thursday

Course Secretary:
Amelia Williams, ameliaw@cs.cmu.edu, Wean 4114.

Lectures: Tues/Thurs 12:00-1:20. Wean Hall 7500

Rec A: Wed 1:30 (DH1211) - Michelle
Rec B: Wed 2:30 (SH 214) - Elisabeth/Virginia (shared)
Rec C: Wed 3:30 (SH 220) - Brent

Everyone is expected to go to one of the recitation sections. Recitations are a chance to engage in more discussion than is usually possible in a large lecture, with a focus on the process of solving algorithmic problems. Recitations will often contain new material as well.

Course Home page: http://www.cs.cmu.edu/afs/cs/academic/class/15451-s07/www/
Check it frequently for announcements and updates, lecture notes, handouts, assignments, solutions, and other goodies.

Bboards: There are two bulletin boards for the course: academic.cs.15-451.discuss is for general discussion, and academic.cs.15-451 is for staff announcements. Please use them and read them frequently.

Grading: Grading will be done as follows:

Important Dates: See the course schedule.

There will be a problem set every two weeks. These will alternate between ones that require written answers (homeworks 1, 3, 5, and 7) and ones that require an oral presentation (homeworks 2, 4, and 6). Here are guidelines for each type of assignment.

Written homeworks:

Oral Homeworks:

Minis: Mini-homeworks will typically be made available on Thursday, and due via email to your TA by the upcoming Tuesday night . These will usually be practice-type problems or sometimes may consist of a single open-ended question to think about. Unlike the regular homeworks, these are intended to require at most one hour of work. If you are taking more time than that, please let one of us know. You should be able to do minis by yourself in one hour-- if you have questions, contact your TA. We will use the following lateness policy. Minis that are turned in up to one day late are worth up to 50% credit, after one day late they are worth 0.

Questions concerning graded material should be presented in a timely fashion (within a week of return) if you wish a grade to be reconsidered.

Textbook: We will not be requiring the purchase of a textbook. However, a book that covers much of the material in this course and that we have used in previous years is the text Introduction to Algorithms (Second Edition) by Cormen, Leiserson, Rivest, and Stein (hereafter referred to as "CLRS"). A new book 'Algorithms' by Dasgupta, Papadimitriou, and Vazirani (hereafter referred to as "DPV"), is good at presenting the high-level ideas. We will be providing lecture notes covering all the material in this course, but if you would like a book with more detailed description of the material (as well as an alternative perspective when the lectures get confusing) these are two that we recommend. The course schedule contains readings from CLRS, DPV and one other (Kleinberg and Tardos) that correspond to the course lectures.

Other helpful material can be found in: Data Structures and Network Algorithms by R. E. Tarjan, Randomized Algorithms by Motwani and Raghavan, Programming Pearls by J. Bentley, Introduction to Algorithms: a Creative Approach by Manber, and the classic Aho-Hopcroft-Ullman book. Another new book that is quite good is Algorithm Design by Kleinberg and Tardos (hereafter referred to as "KT"). It covers less but is more in-depth in certain topics. We will be suggesting readings from this text as well as CLRS and DPV.