Instructor: Michael Mitzenmacher

E-mail: michaelm@eecs.harvard.edu

Office: Maxwell Dworkin 331

Phone: 496-7172

Office Hours: By appointment.

Syllabus: www.eecs.harvard.edu/~michaelm/CS223/syllabus.html

Handouts/Information: www.eecs.harvard.edu/~michaelm/CS223/handouts.html

Calendar: www.eecs.harvard.edu/~michaelm/CS223/calendar.html

The goal of this course is to provide you with a solid foundation in the basic techniques used to analyze randomized algorithms and probabilistic processes. The course is designed for advanced undergraduates with an appropriate theory background (such as CS 124 or CS 125) and first year graduate students. Graduate students in disciplines outside theory are welcome and encouraged to take the course. The course will be a mix of textbook reading, lectures, and reading and discussion of research papers. The goal will be to move as quickly as possible from talking about topics at the textbook level to seeing how they are applied in research problems. We aim to emphasize applications outside of theory, looking at how the techinques come up in networking, Internet algorithms, CS-economics settings, and so on.

The course emphasizes theoretical foundations. Topics to be covered are expected to include the following:

- Expectation, Variance.
- Tail Bounds: Markov, Chevyshev, Chernoff.
- Balls and Bins Problems; the Poisson Distribution.
- Markov Chains: Uses and Examples.
- Random Graphs. Average-Case Analysis of Algorithms.
- The Probabilistic Method: Existence of Combinatorial Objects.
- Continuous Random Variables. Queues, Exponential Distributions.
- Entropy. Shannon's Theorem.
- Markov Chain Monte Carlo Simulation.
- Limited (Pairwise) Independence.
- Coupling.

Students should have taken at least CS 124 or its equivalent. Students should be able to program in a standard programming language; C or C++ is preferred.

Knowledge of probability will be extremely helpful; however, the necessary probability will be covered in class. Students with less probability background will find it necessary to undertake some extra reading and preparation on their own outside of class.

The course will have homework assignments due roughly every week. The assignments will be of two types: some assignments will consist of theoretical problems and programming exercises based on the material. Other assignments will involve reading a paper and being prepared to derive results from the paper in class for discussion. The homework will be worth roughly 1/2 of your grade. The remainder will be based on a short class project (1/4 of your grade) and a short take-home final exam (1/4 of your grade).

All assignments will be due at the beginning of class on the appropriate day. Late assignments are not acceptable without the prior consent of the instructor. Consent will be given for reasonable extenuating circumstances, including medical crises, job interviews, attending conferences, family situations, visiting potential graduate schools, etc.