Course Web Page
Contact Info for Instructor and TA, office hours, assignments, tests,
and general information is all on the course web page at
http://www.cs.unm.edu/~saia/362-s08/
Course Description
From the CS dept web page: The study of data structures and algorithms
and the mathematics needed to analyze their time and space complexity.
Topics include: amortized analysis and self-adjusting data structures
for trees and priority queues; algorithms on graphs, and 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
There are no specific prerequisites for this graduate class. However,
I will assume a mathematical maturity including a familiarity with
proof techniques similar to what is covered in CS261 and any
mathematics classes beyond introductory calculus.
Assignments:
- Your solutions must be typed. You can use any software
package you wish to do this - latex or microsoft word are two
possibilities. Typing up your solutions will make them much easier
for the TA to grade and will help you organize your solutions. There are several
ways to compile mathematical symbols or formula. You can use the openoffice formula
editor with documentation here. Latex is another option
that is helpful if you plan to go to grad school. For window's users, see the website
miktex, and you'll need a GUI such as
TexnicCenter.
- 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. Prior approval is generally given only in the case of a
medical problem or family emergency.
- Group collaboration is encouraged on 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, 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.
- Homeworks are closed Internet. The only resources you may
use in solving the problems are your textbook, class notes, your
fellow students (although see above), and your own intellect (it's
more useful than you think!)
- 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 much 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 and test answers should have the following properties. We will be looking for
these when we grade:
- Clarity: Make sure all of your work and answers are
understandable and well separated from other problems. If we can't
understand 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
each problem.
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
Topics will likely include:
- Basics: Asymptotic Analysis and Recurrence Relations: recursion trees, master method,
annihilators and change of variables (2 weeks, Chapter 3 and 4 in text)
- Sorting algorithms: Bubble sort, merge sort(divide and conquer)
and quicksort(worst vs. average case behavior), loop invariants, and
proofs of correctness. (2 weeks, Chapters 7 and 8)
- Probability and Expectation: Basic probability theory, linearity
of expectation, birthday paradox, coupon collector's problem, average
case analysis of quicksort. (1.5 weeks, Chapter 5)
- Heaps and Priority Queues: ADT's and implementations, Linked List
versus Binary heap. (1 week, Chapter 6)
- Binary Search Trees: Detailed descriptions and analyses of skip
lists and AVL trees (p. 296 in book). High level descriptions of splay
trees, red-black trees and B-trees. (1 week, Chapter 12 and p. 296)
- Hash Tables: Insert, find and delete in O(1) time, use of
pseudo-randomness to get good hash functions. (1 week, Chapter 11)
- Dynamic Programming: String Alignment, Matrix Multiplication,
Longest Common Subsequence (1.5 weeks, Chapter 15)
- Greedy Algorithms (1 week, Chapter 16)
- Amortized Analysis - time permitting, we will cover
amortized analysis of Union-Find (2 weeks, Chapter 17)
- Graph Algorithms: Elementary Graph Algorithms, Minimum Spanning
Tree, Single-Source Shortest Path, All-Pairs Shortest Paths (3 weeks, Chapters
22, 23,24,25)
Course Assessment
Approximate weighting:
- Homeworks, 20% (6-7)
- 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:
- 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)
The more checks you have, the better your participation grade.
Policies
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.