Text this: Introduction to languages and the theory of computation