Home | Lectures | Written Assignments | Programming Assignments | Compilers Assignments | Exams | Cool | Piazza Forum

CS 4501 — Compilers Practicum — Compilers Assignments


Start the compilers assignments early! Completing the course project is a large, complex, and rewarding task, which is made much easier by giving adequate forethought to design. The course schedule allows ample time to complete the assignments -- take advantage of it.

Documentation and structuring should be incorporated into programs from the beginning. Neither instructors nor teaching assistants will help with incomprehensible programs.

I highly recommend that you find an account on a Unix (or Mac OSX) machine or that you install Cygwin on your Windows machine.

The instructional lab machines should have OCaml, Ruby and Python pre-installed.

Automatic Grading

Language Guides

x86-64. A number of on-line resources are available. I used these when making the Reference Compiler. The x86_64 assembly output is known to work on gcc version 4.5.1 20100924 (Red Hat 4.5.1-4) x86_64-redhat-linux and gcc version 4.1.2 20080704 (Red Hat 4.1.2-51), x86_64-redhat-linux.

Cool Assembly Language. The definitive source for the assembly language definition as well as the machine model is the Cool Reference Manual.

CA1: Dead Code Elimination

CA2: Three-Address Code

CA3: Code Generation

CA4: The Compiler

CA5: The Optimizer