This introductory text covers the key areas of computer science, including recursive function theory, formal languages, and automata. Additions to the second edition include: extended exercise sets, which vary in difficulty, expanded section on recursion theory, new chapters on program verification and logic programming, updated references and examples throughout