#### Book

Michael Sipser (2005). *Introduction to the Theory of Computation* (2nd edition). Thomson Course Technology.

#### Other Books

There are LOADS of other textbooks on the topic. Here are some that you can either find in the library or borrow from me. If you feel that you need to get somebody else's explanation (sometimes hearing the same thing in different words helps!), try these.

- Harry Lewis and Christos Papadimitriou.
*Elements of the Theory of Computation*. Prentice-Hall. - Peter Linz.
*An Introduction to Formal Languages and Automata.* - Sudkamp.
*Languages and Machines: An Introduction to the Theory of Computer Science.*

#### JFLAP

The JFLAP software lets you design and simulate various kinds of automata: finite state automata, pushdown automata, Turing machines, and others. It also translates grammars into automata (and back, I think) and performs some other operations on automata.

You can download the software at www.jflap.org. There is also an online tutorial.