CS 225: Pseudorandomness
Spring 2011
SYLLABUS
Course Content
| Topics
| Format and Goals | Prerequisites
| Grading
| Textbook
| Related
Courses
Course meetings: Mon-Wed,
Maxwell Dworkin 323 (
Lecturer: Salil Vadhan
Office: Maxwell-Dworkin 337
Office hours: Wed 1:30-2:30, Fri 1-2, in MD 337
Teaching Fellow: Colin Jia Zheng
Office: Maxwell-Dworkin 138
Sections and Office hours: Wed 4-5pm, Maxwell Dworkin G135
E-mail address for questions:
E-mail address for submitting homeworks: cs225-hw@seas.harvard.edu
Course website: http://www.courses.fas.harvard.edu/4869
Over the past few
decades, randomization has become one of the most pervasive paradigms in
computer science. Its widespread use includes:
So randomness appears
to be extremely useful in these settings, but we still do not know to what
extent it is really necessary. Thus, in this course we will ask:
Main Question: Can
we reduce or even eliminate the need for randomness in the above settings?
Why do we want to do
this? First, essentially all of the applications of
randomness assume we have a source of perfect randomness one that gives
"coin tosses" that are completely unbiased and independent of each
other. It is unclear whether physical sources of perfect randomness exist
and are inexpensive to access. Second, randomized constructions of
objects such as error-correcting codes and expander graphs often do not provide
us with efficient algorithms for using them; indeed, even writing down a
description of a randomly selected object can be infeasible. Finally, and
most fundamentally, our understanding of computation would be incomplete
without understanding the power that randomness provides.
In this course, we will address the
Main Question via a powerful paradigm known as pseudorandomness.
This is the theory of efficiently generating objects that "look
random", despite being constructed using little or no randomness.
Specifically, we will study several kinds of "pseudorandom" objects,
such as:
Each of the above
objects has been the center of a large and beautiful body of research, and
until recently these corpora were largely distinct. An exciting recent
development has been the realization that all four of these objects are almost the
same when interpreted appropriately. Their intimate connections will
be a major focus of the course, tying together the variety of constructions and
applications of these objects we will cover.
The course will reach the
cutting-edge of current research in this area, covering some results from
within the last year. At the same time, the concepts we will cover are
general and useful enough that hopefully anyone with an interest in the theory
of computation or combinatorics could find the
material appealing.
This year, we are going to experiment with a new format for the course. Instead of me walking through all of the material in standard lecture format, you will be expected to read and comment on the relevant material prior to lecture. (We will set up an online forum for posting your comments.) Then the class time will be much more interactive, where you all will bring out the key concepts, ideas, and intuition, as well as work through the difficult technical material together (with my guidance,of course). This will demand more of you, but the hope is that you will come away with a much deeper understanding of the material. As this is an experiment, I will periodically solicit your feedback, and adjust the format as we go. (For example, later in the term, students may lead the discussions rather than me, or we may revert to a more standard lecture format if things are not working.)
By the end of the course, I hope that you will all be able to:
This is an advanced
graduate course, so I will be assuming that you have general "mathematical
maturity" and a good undergraduate background in the theory of
computation. One concrete guideline is that you should have had a minimum
of two other courses in the theory of computation, including at least one
graduate course. If you have particularly strong math background, then
there can be a bit more flexibility with this. But if you
haven't had a prior graduate course in the theory of computation (numbered CS
22x at Harvard), you must come speak to me at office hours before registering
for the class.
In terms of topics, I will be
assuming familiarity with the following. In all cases (especially
complexity theory), the more background you have, the better.
The requirements of
the course:
Assuming we stick with the interactive class format, then we will place roughly equal weight on the first two items (reading, commenting, and participation) and on the second two (problem sets and exams).
The biweekly
problem sets will typically be due on Friday by 1 PM. Your problem set
solutions must be typed and submitted electronically to cs225-hw@seas.harvard.edu. You are
allowed 12 late days for the semester, of which at most 5 can be used on any
individual problem set. (1 late day = 24 hours exactly).
The problem sets may require a lot of thought, so be sure to start them early. You are encouraged to
discuss the course material and the homework problems with each other in small
groups (2-3 people). Discussion of homework problems may include
brainstorming and verbally walking through possible solutions, but should not
include one person telling the others how to solve the problem. In
addition, each person must write up their solutions independently, and these
write-ups should not be checked against each other or passed around.
We will be following my draft textbook Pseudorandomness. When you post your comments on the reading, please include any corrections or suggestions for improving it!
You may also find the following references
useful. Most of them should be in the libraries, on reserve.