A step-by-step development of the theory of automata, languages and computation. Intended for use as the basis of an introductory course at both junior and senior levels, the text is organized so as to allow the design of various courses based on selected material. It features basic models of computation, formal languages and their properties; computability, decidability and complexity; a discussion of modern trends in the theory of automata and formal languages; design of programming languages, including the development of a new programming language; and compiler design, including the construction of a complete compiler. Alexander Meduna uses clear definitions, easy-to-follow proofs and helpful examples to make formerly obscure concepts easy to understand. He also includes challenging exercises and programming projects to enhance the reader's comprehension, and many 'real world' illustrations and applications in practical computer science.