CS 577 - Introduction to Algorithms
Fall 2012 - Section 2
This course provides an undergraduate-level introduction to the design and
analysis of algorithms.
The main focus lies on techniques for constructing correct efficient
algorithms and on tools to reason about them. Design paradigms include greed,
divide-and-conquer, dynamic programming, reductions, and the use of randomness.
A second focus point is computational intractability. NP-complete problems
are covered, as well as ways to deal with them.
The course forms a foundation for all areas of computer science. The
particular computational problems discussed have applications in
artificial intelligence, computational biology, compiler construction,
hardware and network protocols, and optimization.
Jon Kleinberg and Eva Tardos, Algorithm Design, Addison-Wesley, 2006.
CS 240 (Discrete Mathematics), and CS 367 (Data Structures) are essential
A self-calibration homework is handed out during the first lecture.
- Homework (50%).
There will be assignments every other week. Expect the problems to be
You are allowed to work on the problems in groups of two, in which case
you turn in a single copy for the group and both of you receive the same
No sources other than the instructor, the TA, and your fellow students
in the course are allowed.
Model solutions will be handed out during the lecture in which the homework
is due, so no late assignments can be accepted.
The lowest score will be dropped.
Midterm (20%) on R 10/25, 7:15-9:15pm.
Final (30%) on N 12/16, 7:45-9:45am.
Both exams are closed book and closed notes.
The following book is on reserve in Wendt library:
In case you need to refresh discrete math, the text book used for
Math 240 is also on reserve:
- T. Cormen, C. Leiserson, R. Rivest, and C. Stein,
Introduction to Algorithms, 3rd edition, 2009.
- K. Rosen,
Discrete Mathematics and its Applications, 4th edition, 2003.