Professor Rocco Servedio
What is computational complexity?
The study of the inherent abilities and
limitations of efficient computation.
Goal is to understand capabilities of all
algorithms, using all possible programming
languages, run on all possible computing
Why study computational complexity?
• Foundational subject for all of computer
• Source of many tremendously important
and influential ideas in computer science
– Quantum computation
Who am I?
• Been at Columbia for seven years
• AB in math, MS, PhD & postdoc in theoretical
computer science, all from Harvard
• Main research areas: computational complexity
and computational learning theory
Who are you?
• Graduate student in Computer Science, IEOR,
Electrical Engineering, Statistics, Mathematics,…
• Advanced undergraduate (junior/senior) OK too
• Interested in the inherent capabilities and limitations of
• Comfortable with (and interested in!) reasoning
abstractly about computation; “mathematically mature”
• An introductory course in theory of computation
– COMS 3261 or equivalent
– You understand the first five chapters of Sipser’s book
You should be comfortable with the following:
• Big-O notation and basic analysis of algorithms.
– Chapter 3 in "Introduction to Algorithms" by Cormen, Leiserson, Rivest and Stein
• Basic discrete math and probability.
– COMS 3203
– "Mathematical Background" section (Appendix VIII) of CLRS
• Reading and writing proofs.
– Chapter 0 of Sipser's book "Introduction to the Theory of Computation"
• Instructor: Prof. Rocco Servedio
– Office hours 517 Computer Science
Building, times TBA (also by appointment)
• Teaching Assistant: TBA
Main text: “Computational Complexity” by
• “Introduction to the Theory of
Computation” by Michael Sipser. (More
• “Computational Complexity: A Modern
Approach” by Sanjeev Arora and Boaz
Barak. (More advanced.)
Homework and Exams
• Biweekly problem sets (5-7 problems per set, 6
sets per semester). Counts for 70% of final
• Homework problems are proof-based; no
programming. May require substantial time (start
• Take-home exam (5-7 problems); one week. 30%
of final grade.
Rules for Homework
• You can have high-level discussions about
problem sets with 1-2 other students, but all
written solutions must be entirely your own
work; you are not allowed to work together at the
stage of writing things down.
• Submitted electronically; 6 late days/semester
A glimpse of some content
Some topics we’ll cover:
– Basic resources for computation (time, space, nondeterminism)
& their associated complexity classes (P, NP, PSPACE, etc)
– Relationships among resources (P vs NP, time vs space, etc)
– Reductions & completeness (NP completeness, PSPACE
– Counting problems, #P
– Randomness as a computational resource; associated
complexity classes (RP, BPP, etc)
– Nonuniform computational models: circuits, lower bounds
– Communication complexity
– Interactive proofs, IP=PSPACE
– Probabilistically checkable proofs (PCP) and inapproximability