# Models of Computation: 2021-2022

| |

| Part A — Computer Science and Philosophy |

| Michaelmas Term 2021 (16 lectures) |

## Overview

**The lectures for this course will be pre-recorded and available on Panopto (click Computer Science 2021-22> Models of Computation). **

**The lectures will be supported by live discussion sessions. The first 2 discussion sessions were held on Zoom. Following student feedback, the remaining discussion sessions will be on Teams. The discussion sessions will be student-driven, with each discussion session covering the material in the lectures that would normally have been scheduled for that week. For example, the first discussion session will be on Lectures 1 and 2, the second on Lectures 3 and 4, etc.**

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.

## Synopsis

**Part 1: Automata**

- General introduction. Deterministic finite automata. Transition diagrams.
- Non-deterministic finite automata. The subset construction. Reduction of NFAs to DFAs.
- Regular Languages. Closure properties.
- Regular expressions.
- Compiling regular expressions into NFAs, and vice versa.
- Limits to NFAs. The Pumping Lemma. The Myhill-Nerode Theorem.
- Context-free Languages and pushdown automata.

**Part 2: Turing machines and computability **

- Turing's analysis of computation. The Turing machine.
- The intuitive notion of computability. Decision problems. Encoding problems as sets of strings.
- Expressive power of Turing machines. Church's thesis.
- Undecidable problems. Diagonalization. The halting problem.
- Survey of decidable and undecidable problems.
- A glimpse beyond: computatonal complexity, P=NP?
- NP-completeness

## Syllabus

The finite-state machine. Deterministic finite automata and regular languarges.

Non-deterministic finite automata, and equivalence with DFA. Closure properties of regular languages.

Regular expressions.

The pumping lemma. The Myhill-Nerode Theorem.

Context-free grammars. Pushdown automata.

The Turing machine. Church's Thesis. Decision problems and undecidability. The halting problem.

## Reading list

**Primary Texts**

- M. Sipser,
*Introduction to the Theory of Computation*(South-Western College Publishing, International 3rd Ed., 2012).

- D. C. Kozen,
*Automata and Computability*(Springer, Reprint of 1st Ed., 2013).

**Other suggestions**

- J. E. Hopcroft, R. Motwani and J. D. Ullman,
*Introduction to Automata Theory, Languages and Computation (*Addison-Wesley, 2nd Ed., 2001).

## Taking our courses

**This form is not to be used by students studying for a degree in the
Department of Computer Science, or for Visiting Students who are registered for
Computer Science courses**

Other matriculated University of Oxford students who are interested in taking this, or other, courses in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form.