Languages and Machines: An Introduction to the Theory of Computer Science
by Thomas A. Sudkamp
This is a textbook that introduces computer science theory, using formal abstract mathematics, for Junior and Senior computer science students. The third edition, to summarize the author, adds examples, expands the selection of topics, and provides more flexibility to the instructor in the design of a course.
The book is in five parts: (I) Foundations; (II) Grammars, Automata, and Languages; (III) Computability; (IV) Computational Complexity; and, (V) Deterministic Parsing. Many exercises are provided throughout to assist the student in understanding the material.