Instructor: Swastik
Kopparty (__swastik.kopparty@rutgers.edu__)

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).

__Syllabus__

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: AC^{0},
the switching lemma (scribe notes)

·
February 12: AC^{0}(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)