View the Project on GitHub TiarkRompf/cs502

Compiling And Programming Systems

Fall 2019, 3 credits. Instructor: Tiark Rompf. TA: Fei Wang, Guannan Wei.

Announcements will be posted on Piazza. Homework submission and grading will be done through turnin and Blackboard

Lectures are Tuesdays and Thursdays, 3:00pm to 4:15pm, FRNY B124

TA Office hours: Thursday 12:00 - 13:00 by Guannan Wei for campus students (HASS G050) Friday 14:00 - 15:00 by Fei Wang for remote students (via hangout feiwang3311@gmail.com)

About the Course

In a nutshell: The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but non-trivial programming language.

Parts of the class are based on the Advanced Compiler Construction class taught by Michel Schinz at EPFL. The corresponding class materials (lecture slides, programming assignments, etc) are used with permission.

Grades: Final grades will be based on results for the programming assignments (50%), midterm (20%), and final exam (30%). Achieving a minimum of 20% in each of the three components is mandatory for a passing grade.

Late Work Policy: No late submission will be accepted. Exceptions will be given only in the most extreme circumstances. Any travel, including interview trips, load from work or other classes, or simply not being able to get your program to run will not be grounds for extensions or exceptions.

Academic integrity: For general policies about academic integrity etc. please see here. You are expected to read that page and will be held accountable according to its contents.

Recommended Books

Lecture Notes

A set of lecture notes is available here:



  1. Project 1: Getting Started (Due Mon Aug 26 11:59pm)
  2. Project 2: Branches - Loops - Error handling (Due Sep 2nd 11:59PM)
  3. Project 3: Type Checking - Functions - Heap Allocation (Due Sep 16th 11:59PM)
  4. Project 4: CMScala to CPS transformation (Due Sep 25 11:59PM)
  5. Project 5: Value Representation (Due Oct 11 11:59PM)
  6. Project 6: Optimization (Due Nov 8 11:59PM)
  7. Project 7: Garbage Collection (Due Dec 1st 11:59PM)