This book originated in a well-established yet constantly evolving course on
Complexity and Cryptography which we have both given to final year Mathematics
undergraduates at Oxford for many years. It has also formed part of an
M.Sc. course on Mathematics and the Foundations of Computer Science, and
has been the basis for a more recent course on Randomness and Complexity
for the same groups of students.
One of the main motivations for setting up the course was to give mathematicians,
who traditionally meet little in the way of algorithms, a taste for the
beauty and importance of the subject. Early on in the book the reader will have
gained sufficient background to understand what is now regarded as one of the
top ten major open questions of this century, namely the P = NP question. At
the same time the student is exposed to the mathematics underlying the security
of cryptosystems which are now an integral part of the modern ‘email age’.
Although this book provides an introduction to many of the key topics in
complexity theory and cryptography, we have not attempted to write a comprehensive
text. Obvious omissions include cryptanalysis, elliptic curve cryptography,
quantum cryptography and quantum computing. These omissions have
allowed us to keep the mathematical prerequisites to a minimum.
Throughout the text the emphasis is on explaining the main ideas and proving
the mathematical results rigorously. Thus we have not given every result in
The exercises at the end of many sections of the book are in general meant to
be routine and are to be used as a check on the understanding of the preceding
principle; the problems at the end of each chapter are often harder.