15-411 Compiler Design

Fall 2009
Frank Pfenning
Lecture, TuTh 1:30-2:50, GHC 4102
12 units

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: 15-213 Introduction to Computer Systems

What's New?

  • (11/21) The specifications for Lab 6 are now available.
  • (11/5) Lab 5 on safe compilation and basic optimizations has been posted to the subversion repository. Test files and autolab handin will follow within then next few days. Test cases are due Tue Nov 10, compilers Tue Nov 17.
  • (10/25) A clarification to Lab 4 on the evaluation of assignment has been posted to the subversion repository.
  • (10/16) Lab 4 on Structs and Arrays has been released. Test cases are due Thu Oct 22, compilers Thu Oct 29.
  • (10/6) Notes to Lecture 6 on Calling Conventions are now available.
  • (10/2) Lab 3 on Functions has been released. Test cases are due Thu Oct 8, compilers Thu Oct 15. The reference compiler will be available within the next day or two, with an announcement posted to the newsgroup.
  • (10/1) Assignment 3 on Program Analysis has been released. Due Thu Oct 8.
  • (9/12) Lab 2 on Loops and Conditionals is out. It is available in the subversion repository, and also as a compressed tar file lab2.tgz. The deadline for handin is Tue Sep 22, 23:59pm for test cases and Tue Sep 29, 23:59pm for the compilers.
  • (9/10) Test suite 1 for Lab 1 has been released in the svn repository. Both suite 0 and suite 1 will be used to test your compilers.
  • (9/4) Lecture notes for Lecture 2: Instruction Selection are now available.
  • (9/4) The lab is also available as a compressed tar file lab1.tgz. If there are changes to the lab, this file is unlikely to be updated in a timely manner. The subversion repository is your authoritative source.
  • (9/4) Java starter code for Lab 1 on Register Allocation is now available. The next time you svn update in the lab1 directory, you should get this starter code (thanks to Ruy Ley-Wild!).
  • (9/3) A corrected version of the x86-64 Machine-Level Programming overview by Randy Bryant and Dave O'Hallaron is now available.
  • (9/3) LaTeX source for Assignment 1 is now available, in case you want to typeset your answers.
  • (9/2) Assignment 1 on Instruction Selection and Register Allocation is out, due Tue Sep 9, 1:30pm (at the beginning of lecture).
  • (9/2) Lab 1 on Register Allocation is out. You can download the lab from the subversion repository from https://cvs.concert.cs.cmu.edu/15411-f09/<team> with the password that was emailed to you. Please email the instructor in case of problems. The deadline for handin has been moved back by one day (Wed Sep 9, 23:59pm for test files, Wed Sep 16, 23:59pm for compilers).
  • (9/2) Accounts on the Autolab server have been set up.
    Important: Log in with the name of your team (which will be some cheese) and the empty password the first time, then choose a password to share with your partner. Always use your team name for the Autolab server.
  • (9/1) Lectures notes for Lecture 1: Overview and Lecture 3: Register Allocation are now available.
  • (8/31) Accounts on the lab machines have been set up. Please follow the instructions to log into the machines.
  • (8/23) Website created.
  • Prior instances of this course by this instructor:

Course Material

Schedule Lecture schedule, slides, readings, and code
Labs & Assignments Details of assignments, due dates, and policies
Lab Machines Instructions for using the lab machines
Resources Additional course resources

Course Information

Lectures TuTh 1:30-2:50, GHC 4102
Textbook (optional)
Andrew W. Appel
Modern Compiler Implementation in ML
Cambridge University Press, 1998
ISBN 0-521-60764-7 (paperback)
Credit 12 units
Grading 70% Labs, 30% Written assignments
Labs There are 6 labs worth a total of 700 points
Labs can be done individually or in pairs
Assignments There are 5 written assignments worth a total of 300 points
Written assignments must be done individually
Exams There will be no midterm or final exams for this class
Home http://www.cs.cmu.edu/~fp/courses/15411-f09/
Blackboard http://www.cmu.edu/blackboard/
Used only for tracking of grades
Newsgroup academic.cs.15-411


  Frank Pfenning
Contact fp@cs or x8-6343
Office GHC 9101
Office Hours Wed 11:00-12:00

Teaching Assistants

  Contact Office Hours
Ruy Ley-Wild rleywild@cs Tue 11:00-12:00
GHC 9015
Miguel Silva miguels@cs Thu 4:30-5:30
GHC 7707

[ Home | Schedule | Labs & Assignments | Lab Machines | Resources ]
[ Textbook | Autolab ]
[ Blackboard | academic.cs.15-411 ]

Frank Pfenning