CSC402 Homepage

Programming Language Implementation


Dr. Lutz Hamel
Office hours: email:


Chris McCooey
Office Hours: Tuesday 12:00 - 2:00 pm
Remote Only (see BrightSpace)


If any of these questions interest you then CSC402 is for you. We will spend the semester looking at programming language implementations: from syntax highlighters to code analyzers, from interpreters and virtual machines to compilers.

As part of the course we will construct interpreters and translators for domain specific languages such as calculator languages and command line languages for steering your favorite game character. The course will also include one large semester project of a language implementation project of your choosing. This could be a graphics language, a new programming language (think Rust or Go), a domain specific language such as PHP or a new command line shell interpreter for Unix/DOS.

The goal of the course is to give you a solid foundation with respect to programming language implementation which includes grammar construction, parsing techniques, intermediate representations, tree construction, tree pattern matching techniques, among many other topics. The course is designed around a set of programming language implementation design patterns that shed light on the overall construction of programming language processors. These tools will enable you to add domain specific and general programming language implementations to your tool chest to solve difficult engineering problems.

Final Project Ideas

When I say implementation that could mean: as an interpreter, as a compiler to a virtual machine, or as a compiler to actual machine code.

Documents of Interest:

Other Hints

If you want to make use of the Jupyter notebooks interactively then you will have to install Anaconda and git (if it is not installed yet -- on Macs git is installed by default):