xiv Preface
theory, recursive definitions, and proof by mathematical induction. With the exception of
the specialized topics in Sections 1.3 and 1.4, Chapters 1 and 2 provide background material
that will be used throughout the text. Section 1.3 introduces cardinality and diagonalization,
which are used in the counting arguments that establish the existence of undecidable
languages and uncomputable functions. Section 1.4 examines the use of self-reference in
proofs by contradiction. This technique is used in undecidability proofs, including the proof
that there is no solution to the Halting Problem. For students who have completed a course
in discrete mathematics, most of the material in Chapter 1 can be treated as review.
Recognizing that courses in the foundations of computing may emphasize different
topics, the presentation and prerequisite structure of this book have been designed to permit
a course to investigate particular topics in depth while providing the ability to augment
the primary topics with material that introduces and explores the breadth of computer
science theory. The core material for courses that focus on a classical presentation of formal
and automata language theory, on computability and undecidability, on computational
complexity, and on formal languages as the foundation for programming language definition
and compiler design are given in the following table. A star next to a section indicates that
the section may be omitted without affecting the continuity of the presentation. A starred
section usually contains the presentation of an application, the introduction of a related
topic, or a detailed proof of an advanced result in the subject.
Formal Languages
Formal Language
Computability Computational for Programming
and Automata Theory Theory
Complexity
Languages
Chap. 1 : 1-3, 6 - 8
Chap. 1: all Chap. 1: all Chap. 1: 1-3, 6 - 8
Chap. 2: 1-3,4*
Chap. 2: 1-3,4*
Chap. 2: 1-3,4*
Chap. 2: 1-4
Chap. 3: 1-3,4*
Chap. 5: 1-6,7*
Chap. 5: 1-4,5-7* Chap. 3: 1-4
Chap. 4: 1-5,6 *, 7
Chap. 8 : 1-7, 8 '
Chap. 8 : 1-7, 8 * Chap. 4: 1-5,6 *. 7
Chap. 5: 1-6, 7*
Chap. 9: 1-5, 6 *
Chap. 9: l^t, 5-6* Chap. 5: 1-6, 7*
Chap. 6 : 1-5, 6 *
Chap. 10: 1 Chap. 11: 1-4, 5*
Chap. 7: 1-3,4-5*
Chap. 7: 1-5
Chap. 11: all Chap. 14: 1-4, 5-7* Chap. 18: all
Chap. 8 : 1-7, 8 *
Chap. 12: all Chap. 15: all
Chap. 19: all
Chap. 9: 1-5,6 *
Chap. 13: all
Chap. 16: 1-6, 7* Chap. 20: all
Chap. 10: all
Chap. 17: all
The classical presentation of formal language and automata theory examines the rela
tionships between the grammars and abstract machines of the Chomsky hierarchy. The com
putational properties of deterministic finite automata, pushdown automata, linear-bounded
automata, and Turing machines are examined. The analysis of the computational power of
abstract machines culminates by establishing the equivalence of language recognition by
Turing machines and language generation by unrestricted grammars.