Theory of Computation and Automata Courses