Item Description: Theory Book

Review Synopsis: This book is a very good introduction to the theoretical background of languages and computation.

**Update:** This is a review on "a new edition of the Hopcroft/Ullman classic" (hsmyers) (the second edition, to be precise, with a new coauthor). Authors are: John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman.

This book is a very good introduction to the theoretical background of languages and computation.

Topics include:

- introduction to mathematical proofs: one chapter that introduces notation and methods
- finite automata (DFA, NFA), regular expressions and regular languages: three chapters on all the theory, with applications to UNIX regexes and a good chapter on algebraic laws for regexes (read: how can we transform a regex)
- pushdown automata and context-free languages: three chapters on all the theory, with applications to YACC and XML
- turing machines and undecidability: two chapters, very good and easy-to-follow style
- intractable problems and additional classes of problems: detailed discussion of problem classification and classes of problems

The style of the book is very application-oriented, with lots of examples and illustrations of the formal results presented. Mathematical notation is very well introduced and explained. Informal, intuitive sketches of proofs are followed by more formal proofs.

All in all, this was a very motivating reading for me. For all those that, like me, lack the theoretical foundation that is laid in the standard computer science courses, this is a good book to read.

The one drawback of this book is the relatively large errata list (seven pages (printed from browser) as of now, be sure to get it from the website before you start reading). IMHO, this number of errors is hard to excuse given the price tag on the book. OTOH, Mr Ullman is quickly responding to error reports, and includes new errors in the errata promptly, so this should not hamper your learning.