Text this: Introduction to the Theory of Programming Languages