In this course, we will develop provably good pseudorandom objects for a variety of tasks. We will frequently require explicit combinatorial constructions. That is, we will want to efficiently and deterministically construct such objects. Along the way, we will also explore the close connections of such objects to many other areas in computer science and mathematics, such as graph theory, coding theory, complexity theory and arithmetic combinatorics.

Salil Vadhan's Course (with lecture notes)

Luca Trevisan's Course (with lecture notes)

Joseph Naor and Moni Naor. Small-bias Probability Spaces: efficient constructions and Applications.

Noga Alon, Oded Goldreich Johan Hastad and Rene Peralta. Simple Constructions of Almost k-wise Independent Random Variables.

Avraham Ben-Aroya and Amnon Ta-Shma. Constructing Small-Bias Sets from Algebraic-Geometric Codes.

Amnon Ta-Shma. Explicit, almost optimal, epsilon-balanced codes.

Noam Nisan and Avi Wigderson. Hardness vs. Randomness

Russell Impagliazzo and Avi Wigderson. P=BPP Unless E Has Sub-Exponential Circuits: Derandomizing the XOR Lemma.

J. Hastad, R. Impagliazzo, L. A. Levin and M. Luby. A Pseudorandom Generator from any One-way Function.

Luca Trevisan. Extractors and Pseudorandom Generators.

Ran Raz, Omer Reingold and Salil Vadhan. Extracting all the Randomness and Reducing the Error in Trevisan's Extractors.

Shlomo Hoory, Nathan Linial and Avi Wigderson. Expander Graphs and their Applications.

Klim Efremenko. 3-Query Locally Decodable Codes of Subexponential Length.

Michael B. Cohen. Ramanujan Graphs in Polynomial Time.

Russell Impagliazzo, Raghu Meka, David Zuckerman. Pseudorandomness from Shrinkage.

Magnus Gausdal Find, Alexander Golovnev, Edward Hirsch, and Alexander Kulikov. A better-than-3n lower bound for the circuit complexity of an explicit function.