CISC 672 - Advanced Compiler Construction

Professor John Cavazos
Class Time TR, 3:30pm-4:45pm
Room Number Ewing Hall 204
Office Hours TR, 11am-12pm
Held in Smith Hall 412
Course Number CISC 672
Teaching Assistant Timo Koetzing
TA Office Hours Wed. 1-3pm

This course examines the fundamental theory and practice of implementing today's programming languages. Students should emerge with a good appreciation for the implementation issues and strategies behind making programs in high level programming languages work correctly and efficiently on a target machine. A major part of the course is the practical experience of implementing various phases of a compiler for a small object-oriented programming language. Students learn translation methodology that is useful in many other situations in addition to compilation.

You should consider taking CISC 672 if you are curious about:

  • the inner workings of a basic compiler
  • the implementation of object-oriented programming language features
  • building a large software system starting with a base library of useful utilities
  • the answers to many of your questions about how programming languages work
  • the issues in gaining good performance from a high level language program on a particular target architecture

AND you have the proper prerequisites. Note: There is no assumption of previous coursework in compilers.

 
Lecture (Tenative Outline)   Slides   Chapters / Resources / Handouts  
09/04 Overview of Course  Slides (PDF)
09/09 View from 35000 feet                                           Slides (PDF) Chapter 1 / Cool Programming Assignment (PDF)
09/11 Introduction to Cool and SVN  Slides (PDF) SVN Handout (PDF)
9/16 Lexical Analysis - An Introduction   Slides (PDF) Chapter 2 / Phase I : Lexical Analysis (PDF)
9/18 Lexical Analysis Part II   Slides (PDF) Chapter 2
9/23 Lexical Analysis Part III   Slides (PDF) Chapter 2
9/25 Introduction to Parsing  Slides (PDF) Chapter 3
9/30 Top-down Parsing  Slides (PDF) Chapter 3 / Phase II : Parsing (PDF)
10/02 Parsing Project Review  No Slides
10/07 Bottom-up Parsing  Slides (PDF) Chapter 3
10/09 LR(1) Parsing  Slides (PDF) Chapter 3
10/14 LR(1) Table Construction  Slides (PDF) Chapter 3
10/16 The Last Parsing Lecture  Slides (PDF) Chapter 3
10/21 Context Sensitive Analysis I   Slides (PDF) Chapter 4 / Parser Homework (PDF) Due: 10/28
10/23 Context Sensitive Analysis II   Slides (PDF) Chapter 4 / Midterm Study Guide (PDF)
10/28 MidTerm   Chapter 1-4 / Phase III : Semantic Checking (PDF)
10/30 Intermediate Representations  Slides (PDF) Chapter 5
11/06 Procedure Abstraction I  Slides (PDF) Chapter 6
11/11 Procedure Abstraction II  Slides (PDF) Chapter 6
11/13 Procedure Abstraction III  Slides (PDF) Chapter 6
11/18 Code Shape I  Slides (PDF) Chapter 7 / Phase IV : Code Generation
11/20 Code Shape II   Slides (PDF) Chapter 7
11/25 Code Shape III  Slides (PDF) Chapter 7 / Phase IV : Code Generation (PDF)
12/02 Optimization I  Slides (PDF) Chapter 8 (pgs. 383-408)
12/04 Instruction Selection and Scheduling   Slides (PDF) Chapter 11 (pgs. 545-558,569-575) Chapter 12 (pgs. 585-594)
12/09 Register Allocation and Wrap Up  Slides (PDF) Chapter 13 / Final Study Guide (PDF)

 

Course Administration/Overview:

Course Syllabus

Online Documentation :


SVN Guide
Cool Manual
Engineering a Compiler Errata Page
Java Docs for cool-tree
Spim MIPS simulator