Topics in Complexity Theory and Pseudorandomness

Spring 2013



Course Info

Instructor: Swastik Kopparty (

Class Time and Place: Tuesday 5:00pm – 8:00pm, in Hill 250

Office Hours: Wednesday 3:30-4:30 (Hill 432)

Prerequisites: combinatorics, probability, linear algebra, some algorithms, and mathematical maturity.

References: Extremal Combinatorics (Jukna), The Complexity of Boolean Functions (Wegener), Pseudorandomness (Vadhan).




This is an advanced graduate level topics course, aimed at Ph.D. students in theoretical computer science and discrete mathematics.


There will be two major themes in this class.

1.      Primitive complexity theory: Here we will see the power and limitations of various explicit computational devices: formulas, circuits, branching programs, data structures etc. It is in general very tough to prove statements of the form “there is no fast algorithm to solve this problem” (this lies at the heart of the P vs. NP problem). We will study the important cases where we can prove such statements.

2.      Randomness and Pseudorandomness: When given access to a source of randomness, algorithms can do significantly more than they can do deterministically. We will study several aspects of this. What is randomness, really? Where can we get random bits to feed into our randomized algorithms? Can we do away with randomness altogether? We will study the state of the art in our understanding of these questions.


Specific topics include:

·         lower bounds on formulas, constant-depth circuits, branching programs, arithmetic circuits, data structures

·         some surprising upper bounds

·         hashing, epsilon-biased sets, k-wise independence, and other pseudorandom families

·         expander graphs, constructions of expander graphs, applications of expander graphs, deciding connectivity in logarithmic space

·         randomness extractors, constructions from polynomials and from additive combinatorics

·         hardness vs. randomness


Students will be expected to scribe one lecture in latex. There will be some problem sets.

Latex files for scribes: definitions, main file, guidelines


Problem Set (was once updated regularly)


Lecture Schedule

·         January 22: course overview, circuits, formulas (scribe notes)

·         January 29: formula lower bounds, randomness and non-uniformity (scribe notes)

·         February 5: AC0, the switching lemma (scribe notes)

·         February 12: AC0(parity), polynomial approximations, hardness vs. randomness (scribe notes)

·         February 19: k-wise independent hashing, data structures for set membership (scribe notes)

·         February 26: NO CLASS (makeup class on Tuesday, May 7, 2pm-5pm)

·         March 5: data structures for set membership contd., more applications of k-wise independence (scribe notes)

·         March 12: almost k-wise indepence, epsilon-biased sets, error-correcting codes (scribe notes)

·         March 19: NO CLASS (Spring break)

·         March 26: expanders (scribe notes)

·         April 2: more expanders, extractors (scribe notes)

·         April 9: more extractors, condensers (scribe notes)

·         April 16: constructing expanders, undirected connectivity in log space (scribe notes)

·         April 23: constant degree lossless expanders (scribe notes)

·         April 30: pseudorandom generators against space-bounded computation (scribe notes)

·         May 7: (Makeup Class, 2pm-5pm, the usual room) 2-source extractors, pseudorandom generators against low-degree polynomials, superconcentrators (scribe notes)