Computability theory is at the heart of theoretical computer science.
Yet, ironically, many of its basic results were discovered by
mathematical logicians prior to the development of the first
stored-program computer. As a result, many texts on computability theory
strike today's computer science students as far removed from their
concerns. To remedy this, we base our approach to computability on the
language of while-programs, a lean subset of PASCAL, and postpone
consideration of such classic models as Turing machines,
string-rewriting systems, and p. -recursive functions till the final
chapter. Moreover, we balance the presentation of un solvability results
such as the unsolvability of the Halting Problem with a presentation of
the positive results of modern programming methodology, including the
use of proof rules, and the denotational semantics of programs. Computer
science seeks to provide a scientific basis for the study of information
processing, the solution of problems by algorithms, and the design and
programming of computers. The last 40 years have seen increasing
sophistication in the science, in the microelectronics which has made
machines of staggering complexity economically feasible, in the advances
in programming methodology which allow immense programs to be designed
with increasing speed and reduced error, and in the develop- ment of
mathematical techniques to allow the rigorous specification of program,
process, and machine.