This textbook is uniquely written with dual purpose. It covers core
material in the foundations of computing for graduate students in
computer science and also provides an introduction to some more advanced
topics for those intending further study in the area. The book contains
an invaluable collection of lectures for first-year graduates on the
theory of computation, focusing primarily on computational complexity
theory. It also deals with the classification of computational problems
in terms of their inherent complexity.
It incorporates rigorous treatment of computational models, such as
deterministic, nondeterministic, and alternating Turing machines;
circuits; probabilistic machines; interactive proof systems; automata on
infinite objects; and logical formalisms. Features include more than 40
lectures for first year graduate students, and a dozen homework sets and
exercises. The book is aimed at advanced undergraduates and first-year
graduates in Computer Science or Mathematics.