Introduction to the Theory of Computation - Michael Sipser (Thomson Course Technology, 2007)