Overview
This course introduces the classical mathematical models used to analyse computation, including finite
state automata, grammars, and Turing Machines.
A computer scientist should be able to distinguish between what can be computed and what cannot. This
distinction can only be made with a good scientific model of computers and computation. This course
introduces the powerful idea of using a mathematical model to analyse computation.
This course describes a number of different models of computation which were proposed and analysed over
the past century. Many of these models were found to be equivalent, in the sense that they allow exactly the same computations to be carried out. Other models were shown to be less powerful, but simpler to implement, and so useful for some purposes.
Learning Outcomes
At the end of the course students will be able to:
- Describe in detail what is meant by a finite state automaton, and a Turing machine, and
calculate the behaviour of simple examples of these devices.
- Design machines of these types to carry out simple computational tasks.
- Describe a computational problem in terms of a language, and specify simple languages using a grammar or regular expression.
- Reason about the capabilities of standard machines, and demonstrate that they have limitations.