Boolean Circuits
08/28: Lecture 1
course overview, logistics, Boolean operation, (notes)
References: §0.2 in [Sipser].
08/30: Lecture 2
Boolean circuits, complexity, generic upper bound, (notes)
References: §9.3 in [Sipser], §6.1 in [Arora–Barak].
09/04: Lecture 3
existence of hard functions, straight-line programs, (notes)
References: §6.5 in [Arora–Barak].
Finite Automata
09/06: Lecture 4
deterministic finite automata, regular languages, (notes)
References: §1.1 in [Sipser].
09/09: Lecture 5
closure properties of regular languages, (notes)
References: §1.1 in [Sipser].
09/11: Lecture 6
non-deterministic finite automata, (notes)
References: §1.2 in [Sipser].
09/13: Lecture 7
non-deterministic vs. deterministic finite automata, (notes)
References: §1.2 in [Sipser].
09/16: Lecture 8
regular expressions vs. finite automata, (notes)
References: §1.3 in [Sipser].
09/18: Lecture 9
limitations of finite automata, (notes)
References: §1.4 in [Sipser].
09/20: Lecture 10
limitations of finite automata (continued), (notes)
References: §1.4 in [Sipser].
Turing Machines
09/23: Lecture 11
computation, deterministic Turing machines, (notes)
References: §3.1 and §3.3 in [Sipser].
09/25: Lecture 12
variants of Turing machines, Church–Turing hypothesis, (notes)
References: §3.2 in [Sipser].
09/27: Lecture 13
undecidable languages, diagonalization, (notes)
References: §4.2 in [Sipser].
09/30: Lecture 14
reductions, (notes)
References: §5.1, §5.3 in [Sipser].
10/2: Lecture 15
Rice’s theorem, (notes)
References: §5.1, §5.3 in [Sipser].
10/4: Lecture 16
Post’s correspondence problem
References: §5.2 in [Sipser].
10/7: Lecture 17
undecidability in logical theories
References: §6.2 in [Sipser].
Complexity Theory
10/11: Lecture 18
time complexity, extended Church–Turing Thesis, efficient computation
References: §7.1–7.2 in [Sipser].
10/16: Lecture 19
time hierarchy, polynomial-time verifiers, P vs NP
References: §7.3–7.4, §9.1 in [Sipser].
10/18: Lecture 20
SAT is NP-complete (Cook–Levin theorem); guest lecturer: Matvey Soloviev
References: §7.4 in [Sipser].
10/21: Lecture 21
NP-hardness reductions; guest lecturer: Matvey Soloviev
References: §7.5 in [Sipser].
10/23: Lecture 22
review time complexity
References: §7.1-7.4 in [Sipser].
10/25: Lecture 23
more NP-hardness reductions
References: §7.5 in [Sipser].
10/30: Lecture 24
proof systems, NP vs. coNP
References: §10.3 in [Sipser].
11/01: Lecture 25
good characterizations, NP∩coNP, factoring problem
11/04: Lecture 26
circuit complexity vs time complexity
References: §9.3 in [Sipser].
11/06: Lecture 27
probabilistic computation, error reduction
References: §10.2 in [Sipser].
11/11: Lecture 28
randomized algorithms vs circuits, polynomial identity testing, derandomization from hard functions
11/13: Lecture 29
checking matrix multiplication probabilistically in O(n²) time
References: Freivalds’ algorithm (Wikipedia)
11/15: Lecture 30
space complexity, logarithmic space vs polynomial time, graph search
References: §8.4 in [Sipser].
11/18: Lecture 31
directed connectivity in O(log n)² space, Savitch’s theorem
References: §8.1 in [Sipser].
11/20: Lecture 32
O(log n)-space random-walk algorithm for undirected connectivity
References: §7.7, §21.1 in [Arora–Barak].
11/22: Lecture 33
NL-completeness of directed connectivity; guest lecturer: Matvey Soloviev
References: §8.5 in [Sipser].
11/25: Lecture 34
cryptography, encryption, one-time pad, perfect secrecy
References: §9.1 in [Arora–Barak].
11/27: Lecture 35
computationally secure encryption, P vs NP and cryptography
References: §9.2 in [Arora–Barak].
12/02: Lecture 36
pseudorandom generators and one-way functions
References: §9.2 in [Arora–Barak].
12/04: Lecture 37
oracle machine, relativizing proofs, and P vs NP
References: §3.4 in [Arora–Barak].