MPCS 51300 - Compilers

Course Staff

Instructor

Teaching Assistants

  • Shichen Sun

Graders

  • Rupali Sinha

Course Description

Many of the computations computers process are done via executing programs. But how are these programs (e.g., Google Chrome, Adobe Photoshop etc.) actually created? As programmers write and create new programs, we use these “magical” programs known as compilers that convert the code we write into executable programs. In this course, we will explore the major ideas used today in the implementation of compilers, including lexical analysis, parsing, syntax-directed translation, abstract syntax trees, types and type checking, intermediate languages, dataflow analysis, program optimization, code generation, and runtime systems. By the end of this course, you will know how a program written in a high-level language designed for humans is systematically translated into a program written in a language that a computer can execute. Additionally, we will explore how programming languages are designed, their semantics, and how knowing how a compiler works also makes you into a better programmer and increases your ability to learn new programming languages even faster.

Prerequisite: Core Programming, Familiarity with C, Java, and/or Python