I bought this book for my computer science undergrad, it is superb. One of the few books that explains subjects this complex yet still only requires a single read to understand any of its explanations. This along with Sommerville's software engineering and a couple of other titles are absolute musts for any computer scientist's book shelf, I will keep these until I retire. I really wish everything that was on my undergrad reading last had been written like this, NFAs and DFAs seemed so trivial because of it. Glad I bought the hardback (though technically I bought paperback and ended up with a hardback anyway. Lucky)