Compilers: How Computers ExecuteTheir Programs (COMP 3867 R)

Term: 2019-2020 Academic Year Spring

Faculty

Michael Siff
Email address is hidden, click here to email

Schedule

Mon-Thu, 11:05 AM - 12:30 PM (1/27/2020 - 5/8/2020) Location: SLC SC 214

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