This text makes 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 readers, and instill in them an appreciation for the usefulness of theory. A two-part presentation integrates logic and formal language—both with applications. Chapter topics cover mathematical preliminaries, propositional logic, proving why and how, predicate logic, proving with predicates, program verification, logic programming, language models for computer science, language models, finite automata and their languages, regular expressions, a tool for building lexical scanners, context-free grammars, pushdown automata and parsing, and turing machines. For future computer scientists.
I read this for a class taught by one of the two authors (who I heard commenting quite shyly and uncomfortably on NPR about his friend Martin Gardner's death about a year later). It is quite easy to read and understand. The lower community rating comes from the fact that this is a book about logic and rather difficult, despite what I just said. Don't be tricked by numbers! :) You could do much, much worse with a textbook to learn about grammars and languages and automata theory.