Compilers: How Computers ExecuteTheir Programs (COMP 3867 R)

Term: 2025-26 Academic Year Fall

Faculty

Michael Siff
Email address is hidden, click here to email

Schedule

Wed-Fri, 1:40 PM - 3:05 PM (9/1/2025 - 12/12/2025) Location: SLC SC 104

Description

Prerequisite: Introduction to Computer Programming (COMP 2010) or equivalent and permission of the instructor. Compilers are often known as translators—and for good reason: Their job is to take programs written in one language and translate them to another language (usually assembly or machine language) that a computer can execute. It is, perhaps, the ideal meeting between the theoretical and practical sides of computer science. Modern compiler implementation offers a synthesis of: 1) language theory: how languages (both natural languages and programming languages) can be represented on, and recognized by, a computer; 2) software design and development: how practical software can be developed in a modular way—for example, how components of one compiler can be connected to components of another compiler to form a new compiler; and 3) computer architecture: understanding how modern computers work. In this course, we will write a program implementing a nontrivial compiler for a novel prog