This text presents the formal concepts underlying Computer Science.
It starts with a wide introduction to Logic with an emphasis on reasoning and proof, with chapters on Program Verification and Prolog.
The treatment of computability with Automata and Formal Languages stands out in several ways:
it emphasizes the algorithmic nature of the proofs and the reliance on simulations; it stresses the centrality of nondeterminism in generative models and the relationship to deterministic recognition models The style is appropriate for both undergraduate and graduate classes.
Readership: Students and professionals interested in theoretical computation and language models for computer science.
This book invites the reader to explore abstractions that are crucial to computer science. The authors bring a sense of excitement to logics, formal languages and automata—motivating topics by linking them to computing and to computational applications, sometime with whole chapters. They achieve exceptional clarity through a plethora of examples and figures, yet without-losing sight of, and indeed celebrating, the precision that is the hallmark of this subject matter.
Features of the book include: - application of logic to program verification
- programming in the logic language, Prolog
- discussion of "why" and "how" to prove things
- relationships between English and programming languages
- diagrams-first approach to automata
- lex as a tool and an extension of formal language
- pushdown automata as parsing strategies
- Turing machines as models of computation