Harvard CS 121: Introduction to Theoretical Computer Science (Fall 2020)

General Info:
  • Lectures: TuTh 10:30am-12pm online. Attending lectures is highly recommended.
  • The Teaching Team (very preliminary).  
  • Policies and Expectations (to be added).
  • Discussion Site: To be added.
  • Gradescope: Needed for submitting your problem sets.


  • 7/20/2020: Homework Zero is available now (tex, pdf). You can start working on it right away! Use latex to write up your solutions. Hold on to your solutions for now while we figure out the next steps.

Topics (Very Tentative), Calendar and Handouts:

  • Lecture 01 (Th. 09/03): Introduction.
  • Lecture 02 (Tu. 09/08): Math. Background.
  • Lecture 03 (Th. 09/10): Representing Information: Objects as Strings.
  • Lecture 04 (Tu. 09/15): Defining Computation: Circuits.
  • Lecture 05 (Th. 09/17): Completeness: Computing every (finite) function.
  • Lecture 06 (Tu. 09/22): Code as data.
  • Lecture 07 (Th. 09/24): Infinite functions and algorithms: Finite automata
  • Lecture 08 (Tu. 09/29): Finite automata and Regular Functions: Languages.
  • Lecture 09 (Th. 10/01): Limits of Finite Automata: What can they not compute?
  • Lecture 10 (Tu. 10/06): Turing Machines:Introduction.
  • Lecture 11 (Th. 10/08): Programming with Turing Machines: Examples
  • Lecture 12 (Tu. 10/13): Midterm 1.
  • Lecture 13 (Th. 10/15): Turing Equivalent models: High-level Programming.
  • Lecture 14 (Tu. 10/20): Universal Turing Machine: One machine = All machines!
  • Lecture 15 (Th. 10/22): Uncomputability and the Turing-Church Thesis.
  • Lecture 16 (Tu. 10/27): More uncomputability.
  • Lecture 17 (Th. 10/29): Efficient Computation: The class P. The Strong Turing-Church Thesis.
  • Lecture 18 (Tu. 11/03): Polynomial Time Reductions.
  • Lecture 19 (Th. 11/05): NP and NP-completeness.
  • Lecture 20 (Tu. 11/10): Cook Levin Theorem.
  • Lecture 21 (Th. 11/12): More NP-completeness by reductions.
  • Lecture 22 (Tu. 11/17): Midterm 2.
  • Lecture 23 (Th. 11/19): Randomness and Computation: Probability Review.
  • Lecture 24 (Tu. 11/24): Randomized algorithms: Examples
  • (11/25-11/29): Thanksgiving break.
  • Lecture 25 (Tu. 12/01): Modelling Randomized Algorithms. The classes RP and BPP.
  • Lecture 26 (Th. 12/03): Course wrap-up: Crypto, Quantum, Society.

Reference Materials:

  • The textbook for the course is Introduction to Theoretical Computer Science by Boaz Barak. Here is a pdf of the current version. (A frozen version will be posted in late August.) This will be the definitive version of the book that we will refer to.
  • The textbook Introduction to the Theory of Computation by Michael Sipser will cover roughly the same material though in a different order and with quite different notation.  This book is a good source of additional problems and exercises.
  • There are many additional resources and texts mentioned by Boaz Barak at his website for (the Fall 2019 version of) this course. (Scroll down to the bottom on the landing page.) Depending on your time and interest you can sample from these resources. The more perspectives you see, the more you will appreciate the course material!