An introduction to the fundamental translators for programming languages and an examination of the interactions between the design of programming languages, compilers, and run-time environments. Participating in hands-on activities that often require teamwork, students learn how compilation techniques support the process of software development. During a weekly laboratory session students use advanced compiler creation tools to incrementally design and implement a complete compiler, reporting on their results through both written documents and oral presentations. Prerequisite: CMPSC*201. Distribution Requirements: QR, SP.