Languages and Machines, which is intended for computer scientists in the theoretical foundations of their subject, gives a mathematically sound presentation of the theory of computing at the junior and senior level. Topics covered include the theory of formal languages and automata, computability, computational complexity, and deterministic parsing of context-free languages. To make these topics accessible to the undergraduate, no special mathematical prerequisites are assumed. The author examines the languages of the Chomsky hierarchy, the grammars that generate them, and the finite automata that accept them. The development of abstract machines continues with the Church-Turing thesis and computability theory