Computer Science
>
>

15-411 Compiler Design

Fall 2020

Carnegie Mellon University

Comprehensive study of compiler design and implementation, examining interaction between language design and runtime organization. Topics include program analysis, code generation, optimization, memory management.

Course Page

Overview

This course covers the design and implementation of compiler and runtime systems for high-level languages, and examines the interaction between language design, compiler design, and runtime organization. Topics covered include lexical and syntactic analysis, type-checking, program analysis, code generation and optimization, memory management, and runtime organization.

Prerequisites

No data.

Learning objectives

  • Distinguish the main phases of a state-of-the-art compiler
  • Understand static and dynamic semantics of an imperative language
  • Develop parsers and lexers using parser generators and combinators
  • Perform semantic analysis
  • Translate abstract syntax trees to intermediate representations and static single assignment form
  • Analyze the dataflow in an imperative language
  • Perform standard compiler optimizations
  • Generate efficient assembly code for a modern architecture
  • Allocate registers using a graph-coloring algorithm
  • Understand opportunities and limitations of compiler optimizations
  • Appreciate design tradeoffs how representation affects optimizations
  • Automatically manage memory using garbage collection
  • Develop complex software following high-level specifications

Textbooks and other notes

No data

Other courses in Compilers

CS 243: Program Analysis and Optimizations

Winter 2023

Stanford University

CS 143 Compilers

Spring 2022

Stanford University

Courseware availability

Slides available at Schedule

No videos available

Assignments available at Assignments

Resources available at Resources

Covered concepts