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


General Info:
  • Lectures: TuTh 10:30am-12pm. Access via canvas \rightarrow zoom Lectures. Attending lectures is highly recommended!
  • The Teaching Team.  
  • Policies and Expectations (aka "syllabus"). Note that Tablets + Styluses are required for active participation in sections and office hours.
  • Discussion Site: CS 121 Piazza
  • Gradescope: Needed for submitting your problem sets.

Announcements:

  • 11/19/2020: Homework 6 out (tex, pdf). Due 12/03/2020.
  • 11/18/2020: Advanced section Thursday at 4:30pm: Roei Tell on Randomness, Pseudorandomness and Derandomization. Details here.
  • 11/08/2020: Midterm 2 review material here.
  • 10/28/2020: Homework 5 out (tex, pdf). Due 11/12/2020. Solutions.
  • 10/21/2020: Midterm 1 Solutions: (tex, pdf).
  • 10/15/2020: Please take some time to respond to the Midterm Feedback Survey. Its mandatory. Its anonymous. Due Sunday (10/19).
  • 10/15/2020: Homework 4 out (tex, pdf). Due 10/29/2020. Solutions.
  • 10/6/2020: (updated 10/8): Midterm 1 in one week (10/13/2020, "in class" = 10:30-12noon as preferred time).
    • Logistical announcement to follow here.
    • Prep Material here.
    • Sample midterm here - do look at it to familiarize yourselves with format of exam, and to practice latex'ing your answers.
    • Review material (questions, solutions).
  • 10/1/2020: Homework 3 available now (tex, pdf). Due 10/08/2020. Solutions.
  • 9/24/2020: Reading for today's and next two lectures include Sections 6.2, 6.4 and 6.5 from Barak's IntroTCS. Despite what the book says, they are not optional for us!
  • 9/17/2020: Homework 2 is available now (tex, pdf). Due 10/01/2020 (corrected). Solutions.
  • 9/10/2020: Advanced sections start today at 4:30pm! Boaz Barak is our speaker today. Here are future plans (more talks will be added).
  • 9/10/2020: Homework 1 is available now (tex, pdf). Due 9/17/2020. Solutions.
  • 9/2/2020: First lecture is tomorrow (9/3) at 10:30am. All lectures/sections/office hours are accessible from canvas \rightarrow zoom. Here is a full calendar with section times and office hours included.
  • 9/2/2020: Homework0 is due tomorrow by 11:59pm. Please submit via gradescope. You should have received a link by now. If not send a private post on Piazza.
  • 9/2/2020: Please sign up for active participation. See this post for details.
  • 8/15/2020: Here's a sample video (with slide deck) based roughly on the contents of lecture 1. It would be a good to quickly watch the video (skipping parts you don't care about) to get a sense of topics, style etc. before coming to the Q&A session below. We will *not* watch the video in the session.
  • 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. It is due by September 3, 2020. Solutions.

Topics (Tentative), Calendar and Handouts:

  • Lecture 01 (Th. 09/03): Introduction. (Reading: Chapter 0. (All readings refer to the text by Barak, unless specifically indicated.)) Slides. (Slides after edits in class.) Video.
  • 09/03: Section 0 week starts. Video here. Boards: 1, 2, 3, 4. Solutions.
  • 09/03: Problem Set 0 Due.
  • Lecture 02 (Tu. 09/08): Math. Background. (Reading: Chapter 1.) Slides. Slides after lecture (with solutions to exercises). Video.
  • Lecture 03 (Th. 09/10): Representing Information: Objects as Strings. (Reading: Chapter 2.) Slides. Slides after lecture. Video.
  • 09/10: Section 1 week starts. Video. Slides. Boards: 1, 2, 3, 4, 5, 6. Solutions.
  • 09/10: Problem Set 1 Out. (tex, pdf).
  • Lecture 04 (Tu. 09/15): Defining Computation: Circuits. (Reading: Chapter 3.) Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 05 (Th. 09/17): Completeness: Computing every (finite) function. Size of circuits. Upper and Lower bounds. (Reading: Chapter 4.) Slides (pptx, pdf). Slides after lecture. Video.
  • 09/17: Problem Set 1 Due. Problem Set 2 Out. (tex, pdf).
  • 09/17/2020: Section 2 week starts. Video. Slides. Solutions.
  • Lecture 06 (Tu. 09/22): Code as data. Circuit lower bounds. Circuit-interpreter. (Reading: Chapter 5.) Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 07 (Th. 09/24): Infinite functions and algorithms: Finite automata. (Reading: Chapter 6, especially Section 6.2.) Slides (pptx, pdf). Slides after lecture. Video.
  • 09/24/2020: Section 3 week starts. Video. Slides. Annotated Slides. Solutions.
  • Lecture 08 (Tu. 09/29): Finite automata and Regular Functions: Languages. (Reading: Sipser - Chapters 1.2, 1.3. Also Barak Sections 6.3 and 6.4). Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 09 (Th. 10/01): Limits of Finite Automata: What can they not compute? (Reading: Sipser - Chapter 1.4. Also Barak Section 6.5). Slides (pptx, pdf). Slides after lecture. Video.
  • 10/01/2020: Section 4 week starts. Video. Slides. Solutions.
  • 10/01: Problem Set 2 Due. Problem Set 3 out. (tex, pdf).
  • Lecture 10 (Tu. 10/06): Turing Machines:Introduction. (Reading: Chapter 7.1.) Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 11 (Th. 10/08): More Turing Machines: Examples. (Reading: Chapter 7.2.). Slides (pptx, pdf). Slides after lecture. Video.
  • 10/08/2020: Section 5 week (Midterm reviews). No Video. Prep material here.
  • 10/08: Problem Set 3 Due.
  • Lecture 12 (Tu. 10/13): Midterm 1.
  • Lecture 13 (Th. 10/15): Turing Equivalence + Universality. (Reading: Chapter 8, Chapters 9.1, 9.2.) Slides (pptx, pdf). Slides after lecture. Video.
  • 10/15/2020: Section 6 week. Video. Slides. Solutions.
  • 10/15: Problem Set 4 Out. (tex, pdf).
  • Lecture 14 (Tu. 10/20): Uncountability and Uncomputability (Reading: Chapters 2.3, 2.4, 9.3.) Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 15 (Th. 10/22): More Uncomputability. Reductions. (Reading: Chapter 9.3.) Slides (pptx, pdf). Slides after lecture. Video.
  • 10/22/2020: Section 7 week. Video. Slides. Solutions.
  • Lecture 16 (Tu. 10/27): Rice's Theorem. More Reductions. (Reading: Chapter 9.4.) Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 17 (Th. 10/29): Efficient Computation: The class P. The Strong Turing-Church Thesis. (Reading: Chapters 12, 13.) Slides (pptx, pdf). Slides after lecture. Video.
  • 10/29: Problem Set 4 Due. Problem Set 5 Out (tex, pdf).
  • 10/29/2020: Section 8 week. Video. Slides. Solutions.
  • *Election Day* Lecture 18 (Tu. 11/03): Polynomial Time Reductions. (Reading: Chapter 14.) Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 19 (Th. 11/05): NP and NP-completeness. (Reading: Chapters 15.1, 15.2.). Slides (pptx, pdf). Slides after lecture. Video.
  • 11/05/2020: No video. Midterm 2 Prep material here.
  • Lecture 20 (Tu. 11/10): Cook Levin Theorem. (Reading: Chapters 15.3-15.5.). Slides (pptx, pdf). Slides after lecture. Video.
  • Lecture 21 (Th. 11/12): More NP-completeness by reductions. (Reading: Review Chapters 14, 15.) Slides (pptx, pdf). Slides after lecture. Video.
  • 11/12: Problem Set 5 Due.
  • 11/12/2020: Section 10 week. Video. Slides. Solutions.
  • Lecture 22 (Tu. 11/17): Midterm 2.
  • Lecture 23 (Th. 11/19): Randomness and Computation: Probability Review. (Reading: Chapter 18.) Slides (pptx, pdf). Slides after lecture. Video.
  • 11/19: Problem Set 6 Out. (tex, pdf).
  • 11/19/2020: Section 11 week. Video. Slides.
  • Lecture 24 (Tu. 11/24): Randomized algorithms: Examples. (Reading: Chapter 19.) Slides (pptx, pdf). Slides after lecture.
  • (11/25-11/29): Thanksgiving break.
  • Lecture 25 (Tu. 12/01): Modelling Randomized Algorithms. The classes RP and BPP. (Reading: Chapter 20.)
  • Lecture 26 (Th. 12/03): Course wrap-up: Crypto, Quantum, Society. (Reading: Skim chapters 21, 22, 23.)
  • 12/03: Problem Set 6 Due.

Reference Materials:

  • The textbook for the course is Introduction to Theoretical Computer Science by Boaz Barak. Here is the pdf of the book we will be following for the term. (The book sees minor revisions frequently but the pdf version, frozen in August 2020, is our definitive version.)
  • 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!