All computer science grads should read this free programming book since it offers information that is fundamental to their understanding of computation theory.
Two major areas of study in theoretical computer science are complexity theory and computability.
It is self-contained and ideal for a single semester of instruction. The foundation of complexity theory, classical computability theory, is covered first in the work.