The theoretical underpinnings of computing form a standard part of almost every computer science curriculum. But the classic treatment of this material isolates it from the myriad ways in which the theory influences the design of modern hardware and software systems. The goal of this book is to change that. The book is organized into a core set of chapters (that cover the standard material suggested by the title), followed by a set of appendix chapters that highlight application areas including programming language design, compilers, software verification, networks, security, natural language processing, artificial intelligence, game playing, and computational biology. The core material includes discussions of finite state machines, Markov models, hidden Markov models (HMMs), regular expressions, context-free grammars, pushdown automata, Chomsky and Greibach normal forms, context-free parsing, pumping theorems for regular and context-free languages, closure theorems and decision procedures for regular and context-free languages, Turing machines, nondeterminism, decidability and undecidability, the Church-Turing thesis, reduction proofs, Post Correspondence problem, tiling problems, the undecidability of first-order logic, asymptotic dominance, time and space complexity, the Cook-Levin theorem, NP-completeness, Savitch's Theorem, time and space hierarchy theorems, randomized algorithms and heuristic search. Throughout the discussion of these topics there are pointers into the application chapters. So, for example, the chapter that describes reduction proofs of undecidability has a link to the security chapter, which shows a reduction proof of the undecidability of the safety of a simple protection framework.
Elaine Rich's Automata, Computability, and Complexity book is, to me, the CLRS of automata theory. CLRS never goes terribly deep into it's algorithms, but it provides an extremely wide breadth of material backed by solid explanations and clear prose.
While the Sipser book probably remains my favorite book on Theory and Automata, Rich's book definitely covers more, and definitely covers it at a slower pace, making sure not to lose students. Sipser's book is excellent as long as you can follow along, but if something comes along that doesn't make sense to you, the book offers you no assistance. Rich, on the other hand, takes more time to explain things to make sure they are clear. As a result of this slower pace and wider variety of material, Rich's book is certainly larger and more intimidating.
I think Rich's book makes for a better desk reference than a tutorial (like CLRS), though I have to note that Rich's writing style is excellent and clear, so it doesn't make for a poor tutorial text at all. Rich covers lots of complexity-related topics that Sipser barely mentions as well, so this book makes a great reference for basic complexity theory.
One complaint is that it, like Sipser and most other Theory and Automata books, introduces FSM and PDA before Turing machines. I acknowledge that this is more or less the standard order for academica, but I strongly feel that introducing TMs and computability/noncomputability first helps frame an understanding of regular languages and context-free languages that makes them more approachable and interesting. I can't really fault this book for doing what everyone else does, but I felt I had to mention it.
All in all, this is an excellent, expertly-written desk reference for Automata/Theory, and I highly recommend it to anyone interested in CS theory.
I'm completely biased, because I took an automata class from Elaine Rich and tutored for the class for a couple years as well, but I really enjoyed this book and found it to be pretty well-balanced between formal rigor and practical readability. I can't really compare to the leading automata/computability/complexity books because I haven't read them.