Textbook
We're using Introduction to Algorithms, 3rd edition, by Cormen, Leiserson, Rivest, and Stein.
This book, often known as CLRS, is one of the classics of computer science.
Besides being a big fat book, it's authoritative, impressively
comprehensive given it's only 1312 pages long, and generally quite clearly written. There are other
good Algorithms textbooks, but no matter which of those you might read, you'll want CLRS on your bookshelf.
All the reading and problem assignments from CLRS will assume that you're using the
third edition.
Grading
Your course grade will be based on homework (25%) and three exams (25% each).
Questions on problem sets will be graded on a four-point scale (thanks to DLN for
this elegant formulation):
- 4 — quality deserving of being a solution set
- 3 — correct with minor errors or flaws of presentation
- 2 — essentially correct idea but with significant technical or presentation errors
- 1 — some good ideas but fundamentally flawed solution
- 0 — no genuine attempt
Late homework will receive 25% reduction of score during the first 24 hours after the homework
was due, and will receive a score of 0 after that. Consult me at least 24 hours before the paper is
due if you have extraordinary circumstances preventing you from handing in your work on time.
In real emergencies, contact me as soon as you are able.
Homework
Collaboration is a valuable way to learn, and I'm in favor of it. For this class, you may discuss
the problems and projects with other people in the class as much as you like. However, you
must prepare and submit your write-ups and code individually.
Things you must do:
- Typeset your homework submissions using LaTeX.
LaTeX is the uncontested standard tool for presentation of mathematical material, and learning
it here will pay dividend for you beyond this course.
See the course homepage for links to tutorials, references, etc.
- Hand in your homework on time (always specified on the course homepage, but typically
the beginning of class).
- Hand in your homework on paper. This is a request from the course's grader, and I'm
happy to honor it.
- Cite all sources you use to complete the assignments. This will include collaborators
(if any), online sources, books, etc.
Things you may not do:
- Use materials, including solution sets, from previous offerings of this course.
- Use solutions to CLRS problems posted online.
Other things to consider:
- When DLN teaches CS252, he has this policy for collaborative work:
"You may not work from notes taken during collaborative sessions." I do not make this
a formal policy for the course (mainly because I don't see a way to enforce it unless
you and a classmate use exactly the same wordings in your write-ups). However, I think
you would be wise to adhere to this non-policy anyway. One of the reasons for doing
homework in this class is to practice making arguments about algorithm correctness and
performance. If you never practice without the crutch of notes from your collaborators,
you won't get good at making strong arguments, which will hurt on the exams, and will
also undercut much of the value of taking the course in the first place.
- Read every assignment as soon as it's available online, even if you don't plan to
do the work until later. Getting the problems into your head gets your brain going
early, and also helps you plan your time if you see a problem that looks particularly
difficult.
- Your homework solutions are a kind of writing, and as such deserve attention to
audience, clarity, grammar, appropriate use of examples, etc. Write to communicate
ideas effectively.
- Stuck? Talk to a classmate or me. Some problems are hard, so don't be shocked
if you need help.