Computability and Complexity Theory Intended for use in an introductory graduate course in theoretical computer science this text contains material that should be core knowledge in the theory of computation for all graduates in computer science. It is self contained and is best suited for a one semester course. The text starts with classical computability theory which forms the basis for complexity theory. This has the pedagogical advantage that students learn a qualitative subject before advancing to a quantitative one. Since this is a graduate course students should have some knowledge of such topics as automata theory form