Text this: A programmer's introduction to computability and formal languages.