Schedule of topics

Course links

January 22: The nature of computation; basic definitions and notational conventions.

Reading: Sipser, chapter 0 (pages 1-28).

January 24: How to read and edit the course wiki.

Reading: The course wiki.

January 26: Constructing and writing up proofs.

Reading: Sipser, section 1.1 (pages 31-47).

January 29: Finite automata and regular languages.

Reading: Sipser, section 1.2, through the subsection ``Equivalence of NFAs and DFAs'' (pages 47-58).

January 31: Non-deterministic finite automata.

Reading: Sipser, section 1.2, subsection ``Closure under the regular operations'' (pages 58-63).

February 2: Closure properties of regular languages.

Reading: Sipser, section 1.3 (pages 63-76).

February 5: Regular expressions; Kleene's theorem.

Reading: Sipser, section 1.4 (pages 77-98).

February 7: The pumping lemma for regular languages; the Myhill-Nerode theorem.

Reading: Sipser, section 2.1, through the subsection ``Ambiguity'' (pages 99-106).

February 9: Context-free grammars and languages; derivation trees; ambiguity.

Reading: Sipser, section 2.1, subsection ``Chomsky normal form'' (pages 106-109).

February 12: Chomsky normal form.

Reading: Sipser, section 2.2 (pages 109-122).

February 14: Pushdown automata and context-free languages.

Reading: Sipser, section 2.3 (pages 123-134).

February 16: Bar-Hillel's pumping lemma.

February 19: Pause for breath.

Reading: Handout on recursive function theory, sections 1-5.

February 21: Primitive recursive functions; composition and recursive definition.

Reading: Handout on recursive function theory, section 6.

February 23: Bounded iteration; bounded quantifiers; bounded minimization.

Reading: Handout on recursive function theory, section 7.

February 26: Pairs, sequences, and strings.

Reading: Handout on recursive function theory, sections 8 and 9.

February 28: Course-of-values recursion.

Reading: Handout on recursive function theory, sections 10 and 11.

March 2: Partial recursive functions; an encoding for functions.

Reading: Handout on recursive function theory, sections 12 and 13.

March 5: An encoding for computations; the universality theorem.

Reading: Handout on recursive function theory, section 14.

March 7: The halting predicate: a function that is not partial recursive.

Reading: Sipser, section 3.1 (pages 137-147).

March 9: Turing machines and their construction.

Reading: Sipser, sections 3.2 and 3.3 (pages 148-163)

March 12: Non-deterministic Turing machines; extensions and optional attachments.

Reading: Handout on semi-Thue processes.

March 14: Semi-Thue processes; the Post-Markov theorem.

Reading: Sipser, section 4.1 (pages 165-172).

March 16: Decidable and Turing-recognizable languages; closure properties of recursively enumerable languages.

Reading: Sipser, section 4.2 (pages 173-186).

April 2: Undecidable problems.

Reading: Sipser, section 5.1 (pages 187-198).

April 4: Reductions and reducibility; Rice's theorem.

Reading: Sipser, section 5.2 (pages 199-205).

April 6: Post correspondence problems.

Reading: Sipser, section 5.3 (pages 206-215).

April 9: Mapping reducibility.

Reading: Handout on recursive function theory, section 15.

April 11: Recursively enumerable and recursive sets; the enumeration theorem.

Reading: Handout on recursive function theory, section 16.

April 13: The parameter theorem.

Reading: Handout on recursive function theory, section 17.

April 16: Encodings for automata.

Reading: Sipser, section 6.1 (pages 217-224).

April 18: The recursion theorem.

Reading: Sipser, sections 6.2 and 6.3 (pages 224-233).

April 20: The undecidability of arithmetic.

Reading: Sipser, section 6.4 (pages 233-244).

April 23: Kolmogorov-Chaitin complexity; randomness.

April 25: Incompressibility.

Reading: Sipser, sections 7.1 and 7.2 (pages 247-263).

April 27: Time-complexity classes; variation under computational models.

Reading: Sipser, section 7.3 (pages 264-270) and section 7.4, through subsection ``Definition of NP-completeness'' (pages 271-276).

April 30: The class NP; P and NP; polynomial-time reducibility.

Reading: Sipser, section 7.4, subsection ``The Cook-Levin theorem'' (pages 276-283).

May 2: NP-completeness; Cook's theorem.

Reading: Sipser, section 7.5 (pages 283-301).

May 4: Other NP-complete problems.

Reading: Sipser, sections 8.1 and 8.2 (pages 303-309).

May 7: Space-complexity classes; Savitch's theorem.

Reading: Sipser, section 8.3 (pages 309-320).

May 9: PSPACE-completeness.

Reading: Sipser, sections 8.4 and 8.5 (pages 320-333).

May 11: The classes L and NL; student evaluations.

May 15, 9 a.m. to noon: Overview of the course; final revision of the course wiki.