This survey of computability theory offers the techniques and tools that computer scientists (as well as mathematicians and philosophers studying the mathematical foundations of computing) need to mathematically analyze computational processes and investigate the theoretical limitations of computing. Beginning with an introduction to the mathematisation of “mechanical process” using URM programs, this textbook explains basic theory such as primitive recursive functions and predicates and sequence-coding, partial recursive functions and predicates, and loop programs. Features: Extensive and mathematically complete coverage of the limitations of logic, including Gödel’s incompleteness theorems (first and second), Rosser’s version of the first incompleteness theorem, and Tarski’s non expressibility of “truth” Inability of computability to detect formal theorems effectively, using Church’s proof of the unsolvability of Hilbert’s Entscheidungsproblem Arithmetisation-free proof of the pillars of computability: Kleene’s s-m-n, universal function and normal form theorems — using “Church’s thesis” and a simulation of the URM (“register machine”) by a simultaneous recursion. These three pivotal results lead to the deeper results of the theory Extensive coverage of the advanced topic of computation with “oracles" including an exposition of the search computability theory of Moschovakis, the first recursion theorem, Turing reducibility and Turing degrees and an application of the Sacks priority method of “preserving agreements”, and the arithmetical hierarchy including Post’s theorem Cobham’s mathematical characterisation of the concept deterministic polynomial time computable function is fully proved A complete proof of Blum’s speed-up theorem.