# MATH43011/63011 Computation and Complexity

## Overview

Quite a lot of the mathematics you have studied so far involves using algorithms to solve computational problems. For example, you have probably used Euclid's algorithm to solve the problem of finding the greatest common divisor of two integers. In this course, we abstract a level further, and study the properties of problems and algorithms themselves. The kind of questions we ask are "is there an algorithm to solve *every* problem?" and "what problems can be solved by an *efficient* algorithm?".

Compared with most of mathematics, this area is in its infancy, and many important things remain unknown. The course will take you to the point where you understand the statement of, and some of the issues surrounding, one of the most important open questions in mathematics and computer science: the "P vs NP" problem, for which the Clay Mathematics Foundation is offering a $1,000,000 prize. And who knows, perhaps one day you will be the one to solve it!

(Note that this is a proof-based course about the **theory**
of computation, and **not** a practical computational course.)

## Suitability

The course has minimal formal prerequisites, and is taken by quite a range of students:**Third and fourth year MMath and MSc Pure Mathematics**students are the main target audience and are very welcome.**Mathematics PhD students**are also welcome and can count the course towards their taught course requirements.**Third year BSc Mathematics**students may take the course with the permission of the Year Tutor; it doesn't rely on any advanced courses but it does require a fairly high degree of mathematical maturity.**Students from other departments**are welcome to attend on an informal (non-examined) basis; if you want to take the course for credit you should speak to me before registering.