General Info:

- Lectures:
TuTh 10:30am-12pm. Access via canvas $\backslash rightarrow$
zoom $\to $
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:**

- 9/17/2020: Homework
2 is available now (tex,
pdf). Due 10/01/2020
(corrected).

- 9/17/2020: Advanced
section today: Sasha Golovnev on Circuit Lower Bounds.
More details here.

- 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.

- 9/2/2020: First lecture is tomorrow (9/3) at
10:30am. All lectures/sections/office hours
are accessible from canvas $\backslash 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.

- 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.

- 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.

- 09/17: Problem Set 1 Due. Problem Set 2 Out. (tex, pdf).
- 9/17/2020:
Section 2 week starts. Video.
Slides.

- Lecture 06 (Tu. 09/22): Code as data. Circuit lower
bounds. Circuit-interpreter. (Reading: Chapter 5.)

- Lecture 07 (Th. 09/24): Infinite functions and algorithms: Finite automata. (Reading: Chapter 6.)
- Lecture 08 (Tu. 09/29): Finite automata and Regular
Functions: Languages. (Reading: Sipser - Chapters 1.2,
1.3.)

- Lecture 09 (Th. 10/01): Limits of Finite Automata: What
can they not compute? (Reading: Sipser - Chapter 1.4.)

- 10/01: Problem Set 2 Due. Problem
Set 3 out.

- Lecture 10 (Tu. 10/06):
Turing Machines:Introduction. (Reading: Chapter 7.1.)

- Lecture 11 (Th. 10/08): Programming with Turing
Machines: Examples. (Reading: Chapter 7.2.)

- 10/08: Problem Set 3 Due.

**Lecture 12 (****Tu. 10/13****): Midterm 1.**

- Lecture 13 (Th. 10/15): Turing Equivalent models: High-level Programming. (Reading: Chapter 8.)
- 10/15: Problem Set 4 Out.

- Lecture 14 (Tu. 10/20):
Universal Turing Machine: One machine = All machines!
(Reading: Chapters 9.1, 9.2.)

- Lecture 15 (Th. 10/22): Uncomputability and the
Turing-Church Thesis. (Reading: Chapter 9.3.)

- Lecture 16 (Tu. 10/27): More uncomputability. (Reading:
Chapter 9.4.)

- Lecture 17 (Th. 10/29): Efficient Computation: The class
P. The Strong Turing-Church Thesis. (Reading: Chapters 12,
13.)

- 10/29: Problem Set 4 Due. Problem Set 5 Out.
- Lecture 18 (Tu. 11/03): Polynomial Time Reductions.
(Reading: Chapter 14.) *Election
Day*

- Lecture 19 (Th. 11/05): NP and NP-completeness.
(Reading: Chapters 15.1, 15.2.)

- Lecture 20 (Tu. 11/10): Cook Levin Theorem. (Reading:
Chapters 15.3-15.5.)

- Lecture 21 (Th. 11/12): More NP-completeness by
reductions. (Reading: Review Chapters 14, 15.)

- 11/12: Problem Set 5 Due.

**Lecture 22 (Tu. 11/17): Midterm 2.**

- Lecture 23 (Th. 11/19): Randomness and Computation:
Probability Review. (Reading: Chapter 18.)

- 11/19: Problem Set 6 Out.

- Lecture 24 (Tu. 11/24): Randomized algorithms: Examples.
(Reading: Chapter 19.)

- (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!