This first course in compilers is designed to introduce the student to the principles and practices of programming language implementation. The coursework will consist of programming projects, pencil-and-paper problem sets, a midterm, and a final exam. The four programming projects comprise a series of milestones that will ultimately lead to an operational compiler for a miniature object-oriented programming language.