This book provides a gently paced introduction to techniques for implementing programming languages by means of compilers and interpreters, using the object-oriented programming language Java. The book aims to exemplify good software engineering principles at the same time as explaining the specific techniques needed to build compilers and interpreters.
DAVID WATT teaches algorithms and data structures, programming language, and software design. DERYCK BROWN teaches compilers, object-oriented programming, operating systems, and software engineering.