CSCI 4325: Automata, Formal Languages, and Computation