A Second Course in Formal Languages and Automata Theory door Jeffrey Shallit