For sophomore/junior-level courses in, Logic, Automata Theory, Theory of Computation/CS Theory, Discrete Mathematics, and Complexity Theory.
This text provides students with in-depth explorations of a broad range of theoretical topics in computer science. It plunges into the applications of the abstract concepts in order to confront and address the skepticism of many students, and instill in them an appreciation for the usefulness of theory.
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