Domain 02 —
Theory of Computation
Chronology — 21 entries
Chronology
Every milestone in this domain, ordered by date. An event shared by several topics is counted once.
1936On Computable NumbersThe Turing machine — and the universal Turing machine — are born.Turing Machine
1936Church introduces the lambda calculusAn equivalent model of computability, built from function abstraction.Turing Machine
1936The halting problem is undecidableThe diagonal argument, applied to programs.Computability & the Halting Problem
1936The Entscheidungsproblem has no solutionHilbert's programme is proved impossible.Computability & the Halting Problem
1943The McCulloch–Pitts neuronNeural activity described with logic gates.Automata & Formal Languages
1945von Neumann's EDVAC reportTurns the universal Turing machine into a stored-program architecture.Turing Machine
1951Kleene's theoremRegular expressions and finite automata are equivalent.Automata & Formal Languages
1953Rice's theoremEvery non-trivial semantic property of programs is undecidable.Computability & the Halting Problem
1956The Chomsky hierarchyFormal languages classified by generative power.Automata & Formal Languages
1958LISP appearsMcCarthy designs it at MIT, bringing the lambda calculus into programming languages.Lambda Calculus
1965LR parsingKnuth defines a grammar class that can be parsed efficiently.Automata & Formal Languages
1965Polynomial time as the yardstickProposed independently by Cobham and Edmonds.Computational Complexity
1969Curry–Howard correspondencePrograms and proofs are shown to be the same kind of object.Lambda Calculus
1970Denotational semanticsScott builds a model of the lambda calculus from domain theory.Lambda Calculus
1970Recursion theory takes shapeComputability becomes a branch of its own.Computability & the Halting Problem
1992The PCP theoremA deep link between approximation and proof verification.Computational Complexity
2000P vs NP becomes a Millennium ProblemA one-million-dollar prize on the table.Computational Complexity
Curriculum
Courses and labs
Which university courses this domain usually maps to, and whether the practical work is a standalone project course or an in-class lab.
Problem sets and proofs, almost no lab
There is almost no lab work. The only programming assignment is usually “write a simulator for an automaton or a Turing machine”.
Courses
Formal Languages and AutomataTheory of Computation / ComputabilityComputational Complexity (graduate)
Open courses
- MIT 6.045 Automata, Computability and Complexity
- Berkeley CS 172 Computability and Complexity
What the labs look like
- Turing machine / DFA simulator
The one programming task most courses set: implement transitions and run test strings
- Reduction exercises
Reducing 3-SAT to independent set and the like — paper work, not lab work