CISC 672 - Compiler Construction

Professor John Cavazos
Course Number CISC 672
Teaching Assistant Sameer Kulkarni
Held in Smith Hall 103

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.

 
Lectures   Slides   Chapters / Resources / Handouts  
9/02 Overview of Course                                          Slides (PDF)
9/09 View from 35000 feet   Slides (PDF) Chapter 1 / Cool Programming Assignment (PDF)
9/14 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/21 Lexical Analysis Part II   Slides (PDF) Chapter 2
9/23 Lexical Analysis Part III   Slides (PDF) Chapter 2
9/28 Introduction to Parsing  Slides (PDF) Chapter 3 / Phase I Discussion (PDF)
9/30 Introduction to Parsing (Wrap-up)  Slides (PDF) Chapter 3 / Phase II : Parsing (PDF)
10/05 Top-down Parsing  Slides (PDF) Chapter 3
10/07 Bottom-up Parsing  Slides (PDF) Chapter 3 / Phase II (part 1) Discussion (PDF)
10/12 LR(1) Parsing  Slides (PDF) Chapter 3
10/14 LR(1) Table Construction  Slides (PDF) Chapter 3
10/19 The Last Parsing Lecture  Slides (PDF) Chapter 3
10/21 Context Sensitive Analysis I   Slides (PDF) Chapter 4 / Midterm Study Guide (PDF)
10/26 Context Sensitive Analysis II   Slides (PDF) Chapter 4
10/28 MidTerm   Chapter 1-4 / Phase III : Semantic Checking (PDF)
11/02 Intermediate Representations  Slides (PDF) Chapter 5
11/04 Procedure Abstraction I  Slides (PDF) Chapter 6
11/09 Procedure Abstraction II  Slides (PDF) Chapter 6
11/11 Procedure Abstraction III  Slides (PDF) Chapter 6 / Phase III : Semantic Checking Overview (PDF)
11/16 Class Canceled 
11/18 Code Shape I (Guest Lecturer: Sebastien Donadio (ETI))  Slides (PDF) Chapter 7 / Phase IV : Code Generation (PDF)
11/23 Code Shape II   Slides (PDF) Chapter 7
11/30 Optimization I  Slides (PDF) Chapter 8 (pgs. 383-408)
12/02 Instruction Selection and Scheduling   Slides (PDF) Chapter 11 (pgs. 545-558,569-575) Chapter 12 (pgs. 585-594)
Phase IV slides (PDF)
12/07 Register Allocation  Slides (PDF) Chapter 13
12/09 Wrapup and Final Review  Slides (PDF) Final Study Guide (PDF)

 

Course Administration/Overview:

Course Syllabus

Online Documentation :


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