15-411/611 Compiler Design

15-411/611 - COURSE PROFILE


Course Level:
Undergraduate/Graduate
Units: 15 Special Permission Required: No
(if yes, please see Notes below)

Frequency Offered: Generally offered every fall - confirm course offerings for upcoming semesters by accessing the university Schedule of Classes
Course Relevance (who should take this course?): This course covers the design and implementation of compiler and run-time systems for high-level languages, and examines the interaction between language design, compiler design, and run-time organization.
Key Topics: Background Knowledge: Assessment Structure:
  • structure of a compiler compiler
  • static and dynamic semantics
  • compiler correctness
  • parsing and lexing
  • semantic analysis
  • code generation
  • static single assignment form
  • dataflow analysis
  • compiler optimizations
  • assembly code
  • register allocation
  • intermediate representations
  • automatic memory management

Most Recent Syllabus Available: http://www.cs.cmu.edu/~janh/courses/411/17/

Students are expected to have significant esperiance in a high-level programming language

  • set of homework assignments: 30%
  • labs: 70%

Sample Exam: not provided

Sample Assignment:
http://www.cs.cmu.edu/~janh/courses/411/16/hw/lab1.pdf

Sample class notes: not provided

Sample Lecture Recording: not applicable

Course Website: http://www.cs.cmu.edu/~janh/courses/411/17/
Course 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
Learning Resources: Pre-reqs, Cross list, Related  Notes: 
  • Github
  • Piazza
  • Optional text
  • Prerequisites Required: 15-213
  • Minimum Grades in Prereqs:
  • Corequisites: None
  • Prerequisite for: 
  • Anti-requisites:
  • Cross-Listed: 
  • Substitutes: 
  • Related Courses: None
  • Reservations: Some reservations are for Students in CS; Some reservations are for Students in ECE

This course is cross-listed with graduate level number 15-611. Graduate students MUST enroll in the graduate level version of the course. Graduate students will NOT be enrolled into the undergraduate level course and will be removed from the waitlist without notification.

     
updated August 2017   Back to Course Profile List