Introduction to the Theory of Computation by Michael Sipser - WordSea