Thorough understanding of several models of computation, their purpose,
and their use in formal arguments.
Exposure to fundamental results in complexity theory and building of
intuition regarding limitations of computing.
Skills at manipulating formal systems as used in CS theory, particularly
in developing and writing up proofs.
Development of a certain ingenuity required in theoretical areas
for developing new algorithms or proofs.
Preparation for follow-up courses in CS theory and in algorithm design
(including the learning of a number of fundamental results).
Syllabus
Certain topics are implicit in the detailed syllabus below, but essential:
Diagonalization arguments.
Model equivalence
Model-independence. In particular, when considering
the equivalence of TMs and RAMs (or other models) with space and time
measures, why do we use polynomial ``fudge'' factors for time but
only constant factors for space.
Topics will be as follows
Introduction: on the need for formal models of computation (1 week).
Finite Automata and Regular Languages (4 weeks).
DFAs, NFAs, and their equivalence; regular expressions and their
equivalence to FAs; pumping lemma and closure properties.
Turing Machines and RAMs (2 weeks).
TMs, NTMs, and their equivalence; RAMs and their equivalence to TMs.
Elementary Computability Theory (3 weeks).
Primitive recursive functions; partial recursive function; arithmetization;
universal machines; the smn theorem; recursive and r.e. sets; Rice's
theorem and the recursion theorem.
Complexity Theory (3 weeks).
Time and space measures, relations between them, cost accounting on
RAMs and TMs, the hierarchy theorems, relationship between deterministic
and non-deterministic time and space, the basic complexity classes
(L, NL, P, NP, PSPACE, EXP).
Reductions, Hardness, Completeness (3 weeks).
Types of reductions; hardness, easiness, equivalence, and completeness;
completeness for NP, P, others (Cook's theorem and various NP-completeness
results on problems with graphs, sets, strings, others; P-complete
problems); Turing reductions among optimization, search, and decision
problems; reductions from approximation versions to exact or decision
versions.