Skip to content
lectern.tv

Undergraduate Complexity Theory

Prof. Ryan O'Donnell

Rigorous introduction to computability and complexity theory, covering Turing machines, diagonalization, NP-completeness, space complexity, Savitch's theorem, and the polynomial hierarchy.

Start Lecture 120 lectures · 27h total
Syllabus progress0 of 20 watched
CMU 15-455: Undergraduate Complexity Theory

Syllabus

20
Lecture 1· 1:19:32

Lecture 1: Course Overview and Formal Definition of Computation (15-455)

This inaugural lecture introduces the CMU 15-455 curriculum and begins the formal definition of computation, laying the groundwork for complexity theory.

Lecture 2· 1:19:47

Lecture 2: Turing Machines (15-455)

This lecture provides a foundational introduction to Turing Machines, exploring their structure and operational principles as a model for computation, referencing Sipser, Chapter 3.1, 3.3.

Lecture 3· 1:20:14

Lecture 3: Simulations and Turing Machine Variants (15-455)

The session examines various Turing Machine variants and their simulation capabilities, demonstrating the robustness of the core model and its equivalence to other computational constructs.

Lecture 4· 1:17:57

Lecture 4: Time Complexity and Universal Turing Machines (15-455)

This lecture introduces time complexity as a measure of computational efficiency and explores the concept of Universal Turing Machines, fundamental to understanding computability limits.

Lecture 5· 1:20:50

Lecture 5: Time Hierarchy Theorem (15-455)

This lecture formally establishes the Time Hierarchy Theorem, proving that for any given time-constructible function, there are problems that can be solved in strictly more time.

Lecture 6· 1:21:42

Lecture 6: Problems in P (15-455)

This lecture delves into the class P, discussing problems solvable in polynomial time and examining specific examples like PATH and RELPRIME to illustrate its scope.

Lecture 7· 1:20:28

Lecture 7: SAT (15-455)

This lecture focuses on the Satisfiability Problem (SAT), a fundamental problem in computational complexity, exploring its structure and significance.

Lecture 8· 1:21:04

Lecture 8: NP (15-455)

This lecture introduces the complexity class NP, defining problems for which a given solution can be verified in polynomial time, crucial for understanding computational hardness.

Lecture 9· 1:21:02

Lecture 9: Nondeterminism (15-455)

This lecture explores the concept of nondeterminism within computation, particularly in the context of Turing Machines and its implications for complexity classes.

Lecture 10· 1:21:41

Lecture 10: Reductions (15-455)

The lecture explains polynomial-time reductions, a key technique for demonstrating the relative hardness of computational problems within complexity theory.

Lecture 11· 1:16:03

Lecture 11: NP-Completeness and the Cook-Levin Theorem (15-455)

Guest lecturer Yu Zhao explores NP-Completeness and delivers a detailed exposition of the seminal Cook-Levin Theorem, establishing SAT as the first NP-complete problem.

Lecture 12· 1:20:32

Lecture 12: NP-Completeness Reductions (15-455)

Guest lecturer David Witmer demonstrates various NP-completeness reductions, showcasing how to prove the hardness of new problems by relating them to known NP-complete problems.

Lecture 13· 1:19:56

Lecture 13: Search-to-Decision, Padding, Dichotomy Theorems (15-455)

This lecture covers the relationship between search and decision problems, padding arguments, and introduces dichotomy theorems in computational complexity.

Lecture 14· 1:22:37

Lecture 14: Ladner's Theorem and Mahaney's Theorem (15-455)

This lecture presents Ladner's Theorem, demonstrating the existence of problems in NP that are neither in P nor NP-complete, and discusses Mahaney's Theorem.

Lecture 15· 1:21:29

Lecture 15: coNP (15-455)

This lecture introduces the complexity class coNP, defined by problems whose complements are in NP, and explores its relationship to P and NP.

Lecture 16· 1:21:12

Lecture 16: Space Complexity (15-455)

This lecture introduces space complexity, analyzing the amount of memory a computational model requires, and defines key space complexity classes like L and PSPACE.

Lecture 17· 1:21:12

Lecture 17: Savitch's Theorem and NL (15-455)

This lecture explores Savitch's Theorem, establishing a fundamental relationship between deterministic and non-deterministic space complexity, and introduces the class NL.

Lecture 18· 1:20:21

Lecture 18: NL-Completeness and Logspace Reductions (15-455)

The lecture defines NL-completeness and details logspace reductions, demonstrating how problems within NL can be related to a core set of hard problems.

Lecture 19· 1:19:39

Lecture 19: From P-Completeness to PSPACE-Completeness (15-455)

This lecture traces the path from P-completeness to PSPACE-completeness, culminating in the analysis of TQBF as a canonical PSPACE-complete problem.

Lecture 20· 1:21:05

Lecture 20: The Immerman-Szelepcsényi Theorem (15-455)

This lecture provides a comprehensive treatment of the Immerman-Szelepcsényi Theorem, proving that nondeterministic space classes are closed under complementation.