Spring 2022
Tue, Thu 2:00 - 3:15PM FB009
Jan 11 - Apr 28 in-person classroom instruction Instructor:
Jan Prins (prins@cs.unc.edu) FB 334 office hours Wed 2 - 4 PM TA:
Tao Tao (ttao@cs.unc.edu) FB 357 office hours Mon 2 - 4 PM
Overview
This upper-level undergraduate class (also available for graduate credit) extends and
integrates material from prerequisite courses to build a compiler for a non-trivial subset of the Java
programming language. Java is also the implementation language for the compiler.
Upon completion of this course, you should:
Understand the theory and practice of compilers, linkers, debuggers, and program execution by
hardware or abstract machines.
Appreciate the effect of trade-offs in programming language design and computer architecture
on program compilation and the run-time support system.
Have gained additional experience with the design and implementation of a large and complex
program using Java.
Be prepared for advanced study in programming languages and optimizing compilers.
Course Syllabus
Administrative details, such as prerequisites, exam dates, honor code,
and the sequence of topics covered in the course can be found in the
course syllabus
Text
Programming Language Processors in Java: Compilers and Interpreters,
by David Watt and Deryck Brown, Prentice Hall, 2000 (ISBN 0-130-25786-9).
Watt & Brown, Programming Language Processors in Java
pa5 adds no additional functionality, unless you elect to implement one of the optional extensions in the pa5 handout.
pa5 is due Wed Apr 27 (last day of classes)
Place the final version of your compiler project in this directory. If you add optional extension(s), please provide a short
description of the extension(s).