Lectures, Course Outline, and Learning Objectives

Key to ASCII notation

  • 'oo' = ∞ = "infinity"
  • '{}' = ∅ = "empty set"
  • '(-' = ∈ = "element of"
  • '(_' = ⊆ = "subset of" (not strict)
  • 'u' = ∪ = "union"
  • 'n' = ∩ = "intersection"
  • '~L' = L = "complement of L"
  • '-]' = ∃ = "there exists"
  • '\-/' = ∀ = "for all"
  • '/\' = ∧ = "and"
  • '\/' = ∨ = "or"
  • '->' = → = "implies"
  • '<->' = ↔ = "if and only if (iff)"
  • '!' = ¬ = "not", e.g., 'a != b' = a ≠ b = "a is not equal to b", 'w !(- L' = w ∉ L = "w is not an element of L", etc.
  • '\sum' = ∑ = summation sign
  • '\prod' = ∏ = product sign
  • '\Sigma' = Σ = capital greek letter Sigma, '\delta' = δ = lowercase greek letter delta, etc.
  • '|_x_|' = ⌊x⌋ = floor(x)
  • '|^x^|' = ⌈x⌉ = ceiling(x)
  • '_' indicates a subscript, e.g., 'q_1' = q1
  • '^' indicates a superscript, e.g., 'n^2' = n2
  • curly braces '{}' surround longer subscripts/superscripts, e.g., '\sum_{0 <= i <= n} 2^{i/2}' = ∑0 ≤ i ≤ n 2i/2

Lecture summaries

Every week, specific sections of the textbook will be posted as readings. You will be expected to read these sections to prepare for the following week's lectures.
At the end of each week, a short summary of the material covered during lectures will be posted.

  1. Week 1 (Sep 8–12); readings: section 3.1 (and review chapters 0, 1, 2 as needed).
  2. Week 2 (Sep 15–19); readings: section 3.2.
    Formal details of the equivalence between regular TMs and 2-way infinite TMs.
  3. Week 3 (Sep 22–26); readings: section 3.3.
  4. Week 4 (Sep 29–Oct 3); readings: sections 4.1, 4.2.
  5. Week 5 (Oct 6–10); readings: section 5.1.
  6. Week 6 (Oct 13–17); readings: section 5.3.
  7. Week 7 (Oct 20–24); readings: problem 5.28, section 7.1.
  8. Week 8 (Oct 27–31); readings: sections 7.1, 7.2.
  9. Week 9 (Nov 3–7); readings: sections 7.3, 7.4.
    Additional notes — detailed write up of reduction CNF-SAT ≤p 3SAT
  10. Week 10 (Nov 10–14); readings: section 7.5.
  11. Week 11 (Nov 17–21); readings: sections 8.1, 8.2.
  12. Week 12 (Nov 24–28); readings: sections 8.3, 8.4, 8.5.
  13. Week 13 (Dec 1–5); readings: sections 9.1, 10.1.
    See the Tests/Exam page for advice about studying for and writing the final exam.>

Course outline

Lecture topics

The following topics will be covered in this course, in the order listed. For each topic, we have indicated the approximate number of weeks required to cover that topic as well as a list of the relevant sections in the textbook.

  • Computability Theory [5 weeks]
    (Chapters 3, 4, 5 in the textbook)
    • Turing machines: definitions and examples (section 3.1)
    • Other models of computation, the Church-Turing thesis (sections 3.2, 3.3)
    • Diagonalization, the Halting problem (sections 4.1, 4.2)
    • Decidability and recognizability, examples (sections 4.2, 5.1)
    • Reducibility, examples (sections 5.1, 5.2)
    • Mapping reducibility, examples (section 5.3)
  • Complexity Theory [8 weeks]
    (Chapters 7, 8, and parts of 9, 10 in the textbook)
    • Models of efficient computation (sections 7.1, 7.2)
    • P, NP, coNP, examples (section 7.2, 7.3)
    • Polytime reducibility, NP-completeness (section 7.4)
    • Cook's theorem, more NP-completeness (section 7.5)
    • Self-reducibility (not in textbook)
    • Space complexity and other complexity classes (sections 8.1, 8.2, 8.3, 9.1, 10.1)

Learning objectives

By the end of this course, students should

  • be familiar with fundamental restrictions on computability:

    • be familiar with Turing machines;
    • understand the notions of decidability and semi-decidability;
    • know that the Halting problem is undecidable;
    • understand and be able to apply techniques for showing undecidability (diagonalization, reductions);
  • understand the importance of computational complexity:

    • be familiar with the definitions of P and NP;
    • be able to demonstrate membership in P or NP;
    • be familiar with the definition of NP-completeness;
    • be able to apply techniques for showing NP-completeness;
    • know other standard complexity classes (PSPACE, EXP).