CSC402/CSC502 Homepage

Programming Language Implementation

Fall 2017

Instructor:

Dr. Lutz Hamel
Tyler Hall Rm 251
Office hours: Monday/Wednesday 11am-noon Tyler Rm 251
email: hamel@cs.uri.edu

TA:

Na Li
Office Hours: Tuesday/Friday 1:00-2:00
Tyler room 136
email: na_li@uri.edu

Announcements:

Announcements are now handled thru Sakai

[9/5/17] Welcome!

Description:

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 Ruby), 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. NOTE: Students taking this course for graduate credit (CSC502) will have to complete an additional Unix/Linux based project.

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:


NOTE: email submissions are not acceptable for assignments.

Assignments: