CSE 598D: Pseudorandomness
Fall 2011
Instructor: Adam Smith

Course Information

Course Summary

Randomness has proven to be a critical tool in several fields of computer science: algorithm design, cryptography, coding for noisy channels, and complexity theory, to name a few. Most of these applications, however, assume a source of independent and unbiased random bits, which may not always be available. Moreover, in many of the applications, randomization provides a method of showing that some required object (a code or graph with special properties, for example) exists, but doesn't provide an efficient way of constructing or using the object.

The last twenty years have seen the extensive development of a theory of "pseudorandom" combinatorial objects that can replace truly random analogues yet can be constructed efficiently and deterministically. This course will cover a variety of such objects and their applications in computational complexity and cryptography. Specifically, we will discuss:

We will discuss each of these objects individually -- what properties are important, typical examples -- but we will also seek to understand the relationships between them. Several of the breakthroughs in recent research have common from the realization that constructions of these objects are equivalent in certain settings.


The course is based on a course taught several times by Salil Vadhan at Harvard. (In particular, some of the text of this page is based on similar descriptive text written by Vadhan.) The main difference will be that this course will place more emphasis on applications in cryptography. The text for the course will be the recent monograph by Vadhan, Pseudorandomness. I will add notes on the applications to cryptography as appropriate.


The most important prerequisites are general mathematical maturity (reading/writing proofs, understanding abstractions, filling in routine steps) and a good background in the theory of computation. A concrete guideline is that you should have had a minimum of two previous courses in "theoretical" computer science (e.g., algorithms, computational complexity, or cryptography) where emphasis was placed on proofs and problem-solving. Math and EE students: If you have strong pure math background, then I can be felxibile with prerequisite courses but, in that case, you should discuss your background with me in person.

I will assume familiarity with the following topics:

Complexity Theory
P, NP, NP-completeness, reductions (as in CMPSC 464).
Randomized Algorithms
Exposure to some randomized algorithms (e.g., as covered in CSE 565, or courses that analyze primality-testing algorithms rigorously).
The basics of groups, (finite) fields, vector spaces, eigenvectors/eigenvalues.
Discrete math
Basic probability, graph theory and combinatorics.
If in doubt about your background, feel free to talk to me after lecture or by email.


Auditors are welcome but must be wiling to do readings for class. Please ask to be added to the Angel mailing list if you plan to attend regularly.


Evaluation will be based on the following items. The relative weight of the different components will be decided later, based on how many opportunities there are for in-class participation and discussion. For now, I plan to weight the four components approximately equally.

Collaboration and honesty policy

Collaboration on homework problems, with the exception of programming assignments, is permitted, but not encouraged. If you choose to collaborate on some problems, you are allowed to discuss each problem with at most 3 other students currently enrolled in the class. Before working with others on a problem, you should think about it yourself for at least an hour. Finding answers to problems on the Web or from other outside sources (these include anyone not enrolled in the class) is strictly forbidden.

You must write up each problem solution by yourself without assistance, even if you collaborate with others to solve the problem. You must also identify your collaborators. If you did not work with anyone, you should write "Collaborators: none." It is a violation of this policy to submit a problem solution that you cannot orally explain to an instructor or TA.

No collaboration whatsoever is permitted on exams or quizzes.

Violations of this policy will be dealt with according to University regulations.