Course Description

This course is an introduction to the specification and implementation of modern optimizing compilers. Topics include conventional ones like lexical analysis, parsing, type checking, dataflow analysis, optimization, and code generation, as well as unconventional ones like self-optimizing programs, machine learning in smart compilers, and the use of language processing technology in security and verification of programs.

There will be 4 or 5 substantial programming assignments and a final project.

The final project involves building a compiler for an object-oriented language.

Prerequisites: Grade of C or better in CS 310/310H, 336/336H, and Math 408D/408M OR permission of instructor.

Book (suggested): Compilers: Principles, Techniques, and Tools by Aho et al. Addison-Wesley Publishers

Course Staff
Instructor: Professor Keshav Pingali
Email: pingali 'at' cs 'dot' utexas 'dot' edu
Office: ACES 4.126A
TA: Rashid Kaleem
Email: rashid.kaleem 'at'
Office: ACES 4.104
Office Hours: Wednesdays 1pm-2pm in ACES 4.104, second cubicle on the right.
Course Material
Lecture notes

SaM SaM is the architectural simulator that we will use to test and evaluate programs for the first few assignments.
  • SaM Simulator - This is what you'll need to run and test your own SaM programs. To run, make sure that you have a recent version of Java installed. Then, either (a) double click the jar file, or (b) type java -jar SaM-2.6.2.jar at the command line.
  • SaM Design Document - This is a high-level overview of how SaM is designed and includes a very useful description of all the SaM instructions.
  • SaM API Documents - This is the javadoc for the SaM simulator. This is useful for understanding how to connect your compiler up to the SaM tokenizer.
  • SaM Examples - This is a collection of example SaM programs to get a sense of what they should look like.
  • SaM Simulator Source - This is the source code for the SaM simulator. Though not necessary for your assignments, you may enjoy browsing the source.
In-class Exams/ Problem sets

Exam 1:
  • Thursday, March 25th, 2010.
    All front-end topics: lexer,parser,type-checker,AST,symbol table, attribute grammars.
  • Check egradebook for your grades. You can look at the graded exams during TA office hours.
  • Solutions

Problem Set:
Exam 2:
  • Thursday, May 6th, 2010.
  • All front-end and back-end topics.

Assignment 1:
  • Description
  • Out: 26-January, 2010
  • Due: 2-February, 2010, 11:59PM
  • Grades and comments posted on egradebook, email me for questions.
Assignment 2:
  • Description
  • Out: 02-February, 2010
  • Due: 9-February, 2010, 11:59PM
  • Grades and comments posted on egradebook, email me for questions.
Assignment 3:
  • Description
  • Out: 09-February, 2010
  • Due: 16-February, 2010, In class.
  • Grades posted on egradebook, and comments on the graded homeworks.
Assignment 4:
  • Description
  • Out: 16-February, 2010
  • Due: 23-February, 2010, 11:59PM.
  • Late policy, 10% per day deduction, max 3-days.
  • Grading info : Info
Assignment 5:
Assignment 6:
  • Description
  • Out: 23-March, 2010
  • Due: 6-April, 2010, 11:59PM.
  • Grades posted on egradaebook, Email me with questions/issues.
  • Code ::
Assignment 7:
  • Description
  • Out: 20-April, 2010
  • Due: 4-May, 2010, 11:59PM.