Text this: Theory of computation formal languages, automata, and complexity