Theory of Computation (TOC) has undergone a number of evolutions in a short span of time. Topics include Automata and Language Theory, Computability Theory, and Complexity Theory. This graduate level course is more extensive and theoretical treatment of the material in Computability, and Complexity (6.045J / 18.400J).