CS580: Algorithm Design, Analysis, and Implementation - Fall 2004
Professor
Gopal Pandurangan (gopal@cs.purdue.edu)
Office: CS 128
Office hours: by appointment
Lectures
Tue, Thu: 1:30-2:45pm, room CS G66
Teaching Assistant
Maleq Khan (mmkhan@cs.purdue.edu)
Office: CS 143
Office hours: Tue 4.30-5.30pm, Fri 2-3pm
About this course
Welcome to the world of algorithms!!
This is a graduate-level course on algorithms. The students are expected to have some knowledge of
algorithms (such as O-notation, sorting, searching, trees, basic graph algorithms), data structures (such as arrays, lists, trees),
discrete mathematics (comfortable with basic math concepts - sets, graphs, trees, counting), and must have
a knowledge of programming. The official (undergraduate) prerequisites are CS381 (Introduction to Algorithms) and CS483 (Introduction to Theory
of Computation). (Note: If you have not taken these two prerequisites or their equivalent, you cannot take this course.)
Algorithms usually don't exist in a void. They are driven by applications.
Thus we will motivate topics by applications. This will highlight both the
the centrality of algorithms to computer science and the diversity of application areas.
We will also emphasize on techniques for designing and analyzing algorithms.
The importance of understanding the techniques is very essential: they invariably prove useful
when faced with the challenge of designing algorithms for new problems.
For the most part we will be interested in designing efficient algorithms (read polynomial time in a "reasonable" model
of computation - a uniprocessor RAM). However, it turns out that many important problems that arise in practice
may not have efficient algorithms. This will lead us to the theory of NP-completeness and to ways of getting
around the inherent hardness of these problems.
Topics
Introduction: Mathematical concepts for Algorithm Analysis, Probability Theory.
Algorithm Design Techniques: Divide and Conquer, Randomization, Dynamic
Programming, Greedy Algorithms, Amortized Analysis.
Data Structures: Balanced Search Trees, disjoint set
union-find, Heaps, Hashing.
Graph Algorithms: Basic Algorithms, Minimum Spanning Trees, Shortest Paths, Network
Flow, Matchings.
Lower Bounds.
NP-completeness.
Approximation Algorithms.
Probabilistic Algorithms.
Lecture Notes
Lecture 1: 1.pdf
Lecture 2: 2.pdf
Lecture 3: 3.pdf
Lecture 4: 4.pdf
Lecture 5: 5.pdf
Lecture 6: 6.pdf
Lecture 7: 7.pdf
Lecture 8: 8.pdf
Lecture 9: 9.pdf
Lecture 10: 10.pdf
Lecture 11: 11.pdf
Lecture 12: 12.pdf
Lecture 13: 13.pdf
Lecture 14: 14.pdf
Lecture 15: 15.pdf
Lecture 16: 16.pdf
Lecture 17: 17.pdf
Lecture 18: 18.pdf
Lecture 19: 19.pdf
Lecture 20: 20.pdf
Lecture 21: 21.pdf
Lecture 22: 22.pdf
Lecture 23: 23.pdf
Lecture 24: 24.pdf
Lecture 25: 25.pdf
Lecture 26: 26.pdf
Lecture 27: 27.pdf
Lecture 28: 28.pdf
Lecture 29: 29.pdf
Textbook
Introduction to Algorithms, second edition,
Thomas H. Cormen,
Charles E. Leiserson,
Ronald L. Rivest,
and Clifford Stein, MIT Press, 2001, ISBN 0-262-03293-7.
Please note that this is the new second edition!
Book home page;
errata list.
You might find this theoretical computer science cheat sheet (S. Seiden,
SIGACT News, 27(4):52-61, 1996) to be useful for algorithmic analysis.PS or PDF.
Grading
There will be 5 or 6 homework assignments. (The assignments have to be done in Latex.
If you are not familiar with Latex please learn as soon as possible. This is quite easy: there are tutorials on the
Web and we will also provide you with a template file to get started.) Assignments will be non-collaborative i.e.,
you should work independently. You should refer only to the textbook, class notes,
and any handouts given in class. Cheating on the non-collaborative policy of the assignments or on the exams will be taken
seriously.
There will also be a midterm and a final (with a Ph.D. qualifying exam supplement). The (tentative) split up is:
assignments: 20%
midterm:40%
final: 40%
WebCT
We will use WebCT
to turn in assignments.
Newsgroup
We plan to use the purdue.class.cs580 newsgroup ( on the server news.purdue.edu) for announcements and other postings.
You should subscribe to this newsgroup and check it regularly. Send all general questions (such as clarifications
regarding assignments etc.) to this newsgroup.