CPS 230: The Design and Analysis of Algorithms
Fall 2001
Description:
This course is an introductory graduate course and advanced
undergraduate course on the design and analysis of algorithms. We will
cover algorithm design techniques such as divide-and-conquer,
dynamic programming, and greedy algorithms for a variety of tasks
such as sorting, searching, and graph problems. We will also cover
linear programming (if time permits), lower bounds and models, and
NP-completeness.
This course requires undergraduate background in algorithms and/or data
structures and, above all, mathematical sophistication. If you feel that
you may not have sufficient background, please talk with the instructor
Jeff Vitter. A good option that has worked well for such students in the
past is to take CPS 130 instead, also offered Fall semester. (Master's
students can count two 100-level courses toward their Master's degree with
approval from the DGS.)
Lectures:
Mondays and Wednesdays 2:20-3:35 in D106
Possible recitation labs or office hours on Fridays at 2:20-3:35.
Instructor:
Jeff Vitter
Office: D214A LSRC Building
Phone: (919) 660-6503
E-mail: jsv@cs.duke.edu
TA:
Ankur Gupta
Office: D122 LSRC Building
Phone: (919) 660-6507
E-mail: agupta@cs.duke.edu
Office Hours:
-
Tuesday: 9:00am - 10:00pm (Jeff)
-
Friday: 2:20pm - 3:35pm (Ankur)
-
by appointment (call or email).
Course material:
The course will be based on
-
Cormen, Leiserson, Rivest, and Stein.
Introduction to Algorithms,
McGraw Hill, second edition, 2001.
Be sure to get the second edition!
-
Various lecture notes and research papers (handouts).
Other good reference books:
-
A. Aho, J. Hopcroft, and J. Ullman, Design and Analysis of Algorithms,
Addison Wesley 1974.
-
G. Brassard and P. Bratley, Algorithmic - Theory and Practice, Prentice
Hall, 1988.
-
D. Kozen, The Design and Analysis of Algorithms, Springer Verlag,
1991.
-
R. Tarjan, Data Structures and Network Algorithms, SIAM Publications,
1983.
-
C. H. Papadimitriou, Computational Complexity, Addison Wesley, 1994.
Course Synopsis:
-
Mathematical foundations: Growth of functions, summations, recurrences,
average-case and randomized analysis
-
Divide-and-conquer
-
Sorting and selection
-
Computational models and lower bounds
-
Searching: Search trees, red-black trees, augmented search trees, van Emde
Boas trees
-
Amortized analysis: Dynamic tables, splay trees
-
External memory algorithms: External sorting, B-trees
-
Priority queues: Heaps and heapsort, binomial heaps, Fibonacci heaps
-
Greedy algorithms: Huffman codes
-
Dynamic programming
-
Graph algorithms: Breadth-first search, depth-first search, minimal spanning
trees, shortest paths, network flow
-
Union-Find structures
-
Fast Fourier Transform (tent.)
-
Linear programming and the simplex method (tent.)
-
NP-completeness
-
Approximation algorithms
Summary of Topics Covered and Lecture Notes:
Consult the
schedule
of lecture topics for
a list of topics and a copy of lecture notes for the lectures
to date.
Other handouts can be found in
the handouts directory, and
homeworks and old midterm and final exams can be found in the
homework directory.
Grading:
Student grades for the class will be based on
-
Homework assignments (approx. 30%).
-
Closed-book midterm exam(s) and final exam (approx. 60%).
-
Class attendance and participation (approx. 10%).
You might find some of the past tests helpful for review:
Midterm#1
F98
Midterm#1
F99
Midterm#1
F00
Midterm#2
F98
Midterm#2
F99
Midterm#2
F00
Final98
Final99
Final00
Qual98
Qual99
Qual00
Homework Assignments:
Homeworks are due roughly every other week and must be turned in before
class on Monday of the week they're due.
No credit is given for late solutions. For exceptional
circumstances, see Jeff in advance.
Homework assignments will be archived in the
homework directory.
The postscript version, pdf version, and source LaTeX code will be
available for each homework problem.
LaTeX should be used for typesetting homework problems.
Details about proper style for writing up homework solutions and
some guidelines for grading appear in
ps or
pdf
format.
More detailed notes on how to write
(much of which is beyond the scope of this course)
are available in
gzipped ps or
pdf.
Plus you can make use of the LaTeX source file,
the LaTeX macros,
a LaTeX template file,
a LaTeX guide, and
hypertext LaTeX help.
Honor Code wrt Homework Problems:
For homework problems, discussion among students
is permitted,
but students MUST write up solutions independently on their own.
No materials or sources from prior years' classes or from the
Internet can be consulted.
Breaking the rules will result in expulsion.
Each student is required to make a copy of this page, sign it
indicating that the contents are understood, and
turn it in to Jeff.
Newsgroup:
Anonymous Course Feedback:
Last modified: Mon Nov 26 12:15:41 EST 2001
Jeff Vitter / Duke University
/ jsv @ cs.duke.edu