Course Web Page
Contact Info for Instructor and TA, office hours, assignments, tests,
and general information is all on the course web page at
From the CS dept web page: A continuation of 361L with an emphasis on
design of algorithms. Topics include amortized analysis and
self-adjusting data structures for trees and priority queues;
union-find; minimum spanning tree, shortest path and other graph
algorithms; greedy and divide and conquer paradigms.
Text: Our text is Introduction to Algorithms, second
edition by Thomas H. Cormen, Charles E. Leiserson, Ronald
L. Rivest, and Clifford Stein. This book is the "bible" for algorithm
design and analysis.
What you should know
A major prerequisite for this class is CS361. You should already have
passed CS361 or an equivalent class whose description from the CS dept
web page is: An introduction to data structures and algorithms and the
mathematics needed to analyze their time and space complexity. Topics
include 0( ) notation, recurrence relations and their solution,
sorting, hash tables, priority queues, search trees (including at
least one balanced tree structure), and basic graph representation and
search. Course includes programming projects.
251L, and Math 163L.
Note: If you are a graduate student, you should not take this
class. You will receive no credit for it. Instead you should take
the class C S 591-051, ST/DATA STRUCT & ALG offered by Bernard
- Assignments are due at the beginning of class on the due
date. Assignment deadlines are strict: late homeworks will
automatically receive a grade of zero, without prior approval
(easy for one, harder for two, very difficult for three or more).
- Group collaboration is encouraged on all the homeworks, provided
that you write at the top of your homework the names of all the other
students that you collaborated with. Note that although collaboration
is encouraged on homeworks, the solutions must always be
written up individually, and you should not look at or copy
another student's solution. Exchanging homework solutions is
cheating. In case two or more students present essentially
identical solutions, the students will receive a 0 on the assignment,
will be reported to the University Administration and may not be
permitted to continue in the class.
- Put pages of hw in order. We don't care what order you
solve the hw in, but before you turn it in, you must put the problems
in order (this makes grading easier)
- Staple hws, do not use paper clips, folding, tape, putty,
gum, etc. Prof Saia and the TA do not bring staplers to class, so
make sure you staple the hw before class (stapling helps us keep
together all pages of your hw)
- Regrades: if you feel a mistake was made grading your hw, please
let the TA know about it (if you still feel there is a problem, then
please talk to Prof. Saia). Please ask for a regrade within one week
of receiving the graded assignment.
Notes on Grading Hws
Your hws should have the following properties. We will be looking for
these when we grade:
- Clarity: Make sure all of your work and answers are clearly
legible and well separated from other problems. If we can't read it,
then we can't grade it. Likewise, if we can't immediately find all of
the relevant work for a problem, then we will be more likely to grade
only what we see at first.
- Completeness: Full credit for all problems is based on both
sufficient intermediate work (the lack of which often produces a
'justify' comment) and the final answer. There are many ways of doing
most problems, and we need to understand exactly how YOU chose to solve
Here is a good rule of thumb for deciding how much detail is sufficient:
if you were to present your solution to the class and everyone understood
the steps, then you can assume it is sufficient.
- Succinctness: The work and solutions which you hand-in should be
long enough to convey exactly why the answer you get is correct, yet
short enough to be easily digestible by someone with a basic knowledge
of this material.
If you find yourself doing more than half a page of dense algebra,
generating more than a dozen numeric values or using more than a page
or two of paper per problem for your solution, you're probably doing
too much work.
Don't turn in pages with scratch work or multiple answers - if you need to
do scratch work, do it on separate scratch paper. Clearly indicate your
final answer (circle, box, underline, etc.).
Note: It's usually best to rewrite your solution to a problem before you
hand it in. If you do this, you'll find you can usually make the
solution much more succinct.
Topics will likely include:
- Review: Asymptotic Analysis and Recurrence Relations (Chapter 3
in text) and Recurrence Relations (Chapter 4 in text): recursion
trees, master method, annihilators and change of variables(1 week)
- Dynamic Programming: String Alignment, Matrix Multiplication,
Longest Common Subsequence (Chapter 15) (2 weeks)
- Greedy Algorithms (Chapter 16) (2 weeks)
- Amortized Analysis (Chapter 17) (1 week)
- Union-Find (Chapter 21) (1 week)
- Graph Algorithms: Elementary Graph Algorithms, Minimum Spanning
Tree, Single-Source Shortest Path, All-Pairs Shortest Paths (Chapters
22 23,24,25) (5 weeks)
- NP-Completeness: Complexity Classes, P, NP, Reductions. (Chapter 34) (1-2 Weeks)
- Homeworks, 20% (about 6)
- Midterm, 30%
- Final, 40%
- Class Participation, 10% . I expect about 90% attendance in
class. There will be frequent in-class exercises, and I will call on a
random person in the class to answer. The participation grade will be
based on a check system:
The more checks you have, the better your participation grade.
- If I call on you for an in-class exercise, and you give an educated
guess, ask me an intelligent question, or give a partial answer, you get one check
- If I call on you for an in-class exercise, and you give a correct
or near-correct answer, you get two checks
- If you come to my office hours or the TA's, you get one check
(good for one time only)
Grades assigned at the end of the semester are final. You will not be
able to do any additional projects, papers, etc. to change your grade.