Prerequisite course: Discrete Mathematics or Mathematics for Computation Theory

This course is a prerequisite for Complexity Theory (Part IB and Diploma), Quantum Computing (Part II and Diploma)

Aims

The aim of this course is to introduce several apparently different
formalisations of the informal notion of algorithm; to show that they
are equivalent; and to use them to demonstrate that there are
uncomputable functions and algorithmically undecidable problems.

Lectures

Introduction: algorithmically undecidable problems.
Decision problems. The informal notion of algorithm, or effective
procedure. Examples of algorithmically undecidable problems. [1
lecture]

Register machines. Definition and examples; graphical
notation. Register machine computable functions. Doing arithmetic
with register machines. [1 lecture]

Universal register machine. Natural number encoding of
pairs and lists. Coding register machine programs as numbers.
Specification and implementation of a universal register machine. [2 lectures]

Undecidability of the halting problem. Statement and
proof. Example of an uncomputable partial function. Decidable sets
of numbers; examples of undecidable sets of numbers. [1 lecture]

Turing machines. Informal description. Definition and
examples. Turing computable functions. Equivalence of register
machine computability and Turing computability. The Church-Turing
Thesis. [2 lectures]

Primitive recursive functions. Definition and examples.
Primitive recursive partial function are computable and total.
[1 lecture]

Partial recursive functions. Definition. Existence of a
recursive, but not primitive recursive function. Ackermann's
function. A partial function is partial recursive if and only if it
is computable. [2 lectures]

Recursive and recursively enumerable sets. Decidability and
recursive sets. Generability and recursive enumeration. Example of
a set that is not recursively enumerable. Example of a recursively
enumerable set that is not recursive. Alternative characterisations
of recursively enumerable sets as the images and the domains of
definition of partial recursive functions. [2 lectures]

Objectives

At the end of the course students should

be familiar with the register machine and Turing machine models
of computability

understand the notion of coding programs as data, and of a universal
machine

be able to use diagonalisation to prove the undecidability of
the Halting Problem

understand the mathematical notion of partial recursive function
and its relationship to computability

be able to develop simple mathematical arguments to show that
particular sets are not recursively enumerable

Recommended reading

* Hopcroft, J.E., Motwani, R. & Ullman, J.D. (2001). Introduction to automata theory, languages, and computation. Addison-Wesley (2nd ed.).
Cutland, N.J. (1980). Computability. An introduction to recursive function theory. Cambridge University Press.
Davis, M.D., Sigal, R. & Weyuker E.J. (1994). Computability, complexity and languages. Academic Press (2nd ed.).
Sudkamp, T.A. (1995). Languages and machines. Addison-Wesley (2nd ed.).