12/08/09: The slides from today's class (lecture 12) have been updated

12/03/09: Here is a short document on iteration space graphs and dependence analysis which will hopefully clear up some of the confusion I introduced in class today!

11/09/09: The exam key is now available. You have until the beginning of class next Tuesday (11/16) to request a regrade.

11/01/09: The slides which listed the exam topics are here. Also, see below for solutions to all the problem sets.

10/28/09: The second exam will be next Tuesday, November 3rd. We will have a short review session towards the end of class on Thursday. I have also posted two problem sets, on instruction scheduling and loop optimizations, below. The solutions to these will be posted over the weekend.

10/7/09: The exam key is now available. Reminder: you must inform me of any regrade requests by the end of office hours (11:30) on Thursday.

9/26/09: The topics for midterm one can be found here

9/22/09: I wrote up a brief document on L-values, R-values, the * operator and how it all works.

9/22/09: There was a mistake in the solution to problem 3 of problem set 3. The parse table entry for B should predict production 7 when it sees an a, too. The corrected solution is posted.

9/21/09: There was a small bug in the notes for lecture 6, on how to deal with field accesses of structures. The correct procedure is here (PDF).

9/14/09: I sent out an email about refactoring the grammar to eliminate left recursion. If you do refactor the grammar, please include a file detailing the new grammar that you used.

Old announcements are archived here
Course Description

This course focuses on the tools and techniques needed to build an optimizing compiler. Topics include:

  1. Scanning and parsing: determining the syntactic structure of a program
  2. Semantic routines: determining the semantics of a program and building an intermediate representation
  3. Code generation: emitting assembly code that is equivalent to the program
  4. Program optimizations: improving the performance of a program
  5. Program analysis: determining interesting information about a program's behavior
Course Details
Instructor:Milind Kulkarni
milind 'at' purdue 'dot' edu
Office hours: Tuesdays and Thursdays, 10:30-11:30, and by appointment
EE 324A
TA:Lin Yuan
yuanl 'at' purde 'dot' edu
Office hours by appointment
Time:Tuesdays and Thursdays, 9:00-10:15
Location:EE 115
Course Information

The course syllabus discusses most of the details of the course, including a tentative schedule of topics, a brief description of the project and other administrative information.

Lecture Notes
Problem Sets