Course Description
From the course catalog:
This course
investigates methods for designing efficient and reliable
algorithms. By carefully analyzing the structure of a problem within a
mathematical framework, it is often possible to dramatically decrease
the computational resources needed to find a solution. In addition,
analysis provides a method for verifying the correctness of an
algorithm and accurately estimating its running time and space
requirements. We will study several algorithm design strategies that
build on data structures and programming techniques introduced in
Computer Science 136. These include induction, divideandconquer,
dynamic programming, and greedy algorithms. Particular topics of study
include graph theory, hashing, network flow, and advanced data
structures.
We all have problems. This course is not only about
finding solutions to the problems, but rather, provably good
solutions. We begin by developing techniques for algorithm
analysismathematical methods for putting bounds on the time and the
space complexity of algorithms. We'll study asymptotic analysis,
recurrence relations, and some probability theory. Next, we'll delve
into problem solving strategies like divide and conquer, greedy
methods, and dynamic programming. Now that we've got some practice
solving problems and analyzing our solutions, we'll try our hand at
some algorithms on advanced data structures like graphs and balanced
trees. Probing further we'll learn some advanced algorithm design
techniques like linear programming andthe fast Fourier
transforms. Finally, we'll look at a class of problems for which no
known polynomial time solutions exist. We'll talk about ways of
identifying these seemingly different problems, and proving that they
are all, in some way, intimately related.
Course Grading
Here is the breakdown:
 40%: Nine homework assignments, each worth 5% of your grade. I
will drop the lowest homework scores. You have a total of 4 late
days at your disposal. A partial late day counts toward one whole
late day. For example, if you turn in a homework 25 hours late,
then it counts as 2 late days.
 25%: A takehome midterm.
 25%: A takehome, 24hour, cumulative final.
 5%: Six pop quizes, each worth 1% of your grade. I'll drop the lowest quiz score.
 5%: A class participation grade based on your attendance,
promptness, and participation in lecture.
Some points of clarification:
 The teaching assistant will give provisional grades on your
assignments based on sample solutions and grading criteria I provide.
In addition, I'll examine every problem set so that I know what topics
you've individually mastered. On most problem sets, I'll exclusively
correct one of the problems, paying particular attention to your style
and prose. I will meet individually with you several times during the
semester to discuss your proof style. I will also adjust the
provisional grades when appropriate.
 The homework counts significantly toward your grade. I expect you
will discuss the problems with members of the class, but I expect you
will not write up solutions together (i.e, there is some modicum of
space between you and other members of the class when you write up
your solutions). Deviation is considered an honor code violation.
Insightful discussion with others must be cited in your homework
solution. You will not lose points for citations, nor will you
fall from my good graces; quite the contrary, citation gives credit
where credit is due. Your understanding of the problems should be
sufficient enough to recount the key arguments of the solution by
yourself.

Homework is due at the beginning of class. Homework cannot be turned
in via proxy (e.g., via an email attachment or a friend) without prior
arrangement.
 Homework should be written clearly and concisely. Rewrite your
proofs if they do not flow well. If your handwriting is messy,
consider using LaTeX.
If your handwriting is not messy, still consider using LaTeX.
 Homework solutions will be distributed the Wednesday following the Friday due date.
 Homework is only available for download inside the Williams subdomain. Tunnel in (probably via a SOCKS5 proxy) if you're offcampus.
 Each homework question will be graded on a 5 point scale. Here's
the breakdown:
 5: The solution is clear and correct. This solution would easily
find a home in a research paper.
 4: The solution contains a few mistakes, but they are mostly
arithmetic or of little significance to the overall argument.
 3: The solution hits on the main points, but has at least one
logical gap.
 2: The solution contains several logical mistakes, but parts of
it are salvageable.
 1: The solution is just plain wrong.
 0: No attempt is made at solving the problem.
I will reward insightful commentary on your thought process. This
includes describing what is blocking your progress on a problem you
cannot solve. In other words, telling me why and how you got stuck
may earn you 13 points. Please do this!
A few notes on the midterm:
 The midterm will be take home. You may only use your course notes, course text, homework, and homework solutions.
 The midterm will be very similar to a problem set.
 It will be assigned: 11.45  Friday, 05 April 2013.
 It will be due: 11.00  Monday 08 April 2013.
 No collaboration is allowed.
 I will be available by email and phone all weekend.