Computability and complexity theory should be of central concern to practitioners as well as theorists. Unfortunately, however, the field is known for its impenetrability. Neil Jones's goal as an educator and author is to build a bridge between computability and complexity theory and other areas of computer science, especially programming. In a shift away from the Turing machine- and Gödel number-oriented classical approaches, Jones uses concepts familiar from programming languages to make computability and complexity more accessible to computer scientists and more applicable to practical programming problems.
According to Jones, the fields of computability and complexity theory, as well as programming languages and semantics, have a great deal to offer each other. Computability and complexity theory have a breadth, depth, and generality not often seen in programming languages. The programming language community, meanwhile, has a firm grasp of algorithm design, presentation, and implementation. In addition, programming languages sometimes provide computational models that are more realistic in certain crucial aspects than traditional models.
New results in the book include a proof that constant time factors do matter for its programming-oriented model of computation. (In contrast, Turing machines have a counterintuitive "constant speedup" property: that almost any program can be made to run faster, by any amount. Its proof involves techniques irrelevant to practice.) Further results include simple characterizations in programming terms of the central complexity classes PTIME and LOGSPACE, and a new approach to complete problems for NLOGSPACE, PTIME, NPTIME, and PSPACE, uniformly based on Boolean programs.
Foundations of Computing series
"Neil Jones is one of the precious few computer scientists with great expertise and leadership roles in both formal methods and complexity. This makes his book especially valuable."
—Yuri Gurevich, Professor of Computer Science, University of Michigan
"This book has two very clear and distinct a9ms: to present the theory of computability and complexity in a different didactic way, namely as motivated by programming; and to modify notions of complexity theory so that they are more natural. As to the first aim, there is not really much literature in this direction. This places the text in the category 'highly welcome textbook for computer science students.' The second aim places this text in the category 'research monograph.' Since both parts of the book are presented well, I strongly recommend it. either section alone would be a substantial contribution."
—Henk Barendregt, Professor of Foundation of Mathematics and Computer Science, University of Nijmegen, The Netherlands
"Computability and Complexity is an introduction to the basic concepts of computability, complex, and the theory of programming languages. The author knows very well all three subjects, has made important contributions to them, has original insights and delightful personal points of view, and overall has good taste. I know of no previous book that provides a comprehensive introduction to all three subjects."
—Christos H. Papadimitriou, Professor of Computer Science, University of California, Berkeley; author of Computational Complexity