HOT Compilation

Course ID 15617

Description The course covers the implementation of compilers for higher-order typed languages such as ML and Haskell and gives an introduction to type-preserving compilation. Core topics include type checking and inference, elaboration, closure conversion, garbage collection, and translation to a low-level imperative language. Other topics may vary from year to year and include phase splitting, CPS conversion, typed assembly language, substructural and adjoint type systems, intersection types, and variable lifetimes.

Key Topics
Core topics include type checking and inference, elaboration, closure conversion, garbage collection, and translation to a low-level imperative language.

Required Background Knowledge
15-312 Principles of Programming Languages (or equivalent)

Course Relevance
CS juniors, seniors, and graduate students

Course Goals
Students will implement a compiler and runtime system for a functional language as a term project, split into multiple stages.

Learning Resources
There is no textbook for the course, but some notes will be prepared. Attendance in lectures is essential.

Assessment Structure
Grades are based on the number of successfully implemented projects.

Extra Time Commitment
No, although projects throughout the semester may require variable time commitments.

Course Link
https://www.cs.cmu.edu/~crary/hotc/