CISC 471/672 Compiler Construction

Professor John Cavazos
Class Time MW, 5:00-6:15pm
Room Number ISE 205
Office Hours M 4-5pm / W 4-5pm
Held in Saxbys Coffee
Course Number CISC 471 / 672
Teaching Assistant Fanchao Meng
TA Office Hours Thursdays 5-7pm
Held in Smith Hall 201

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 471 / 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  
2/05 Overview of Course Slides (PDF) Cool Programming Assignment (PDF)
2/07 View from 35000 feet   Slides (PDF) Chapter 1
2/12 Lexical Analysis
An Introduction
Slides (PDF) Chapter 2
Lexical Analysis Phase (PDF) rubric-phase2.txt
2/14 Lexical Analysis Project Overview   Example Cool Program (PDF)
2/19 Lexical Analysis
(Thompson's Construction)
Slides (PDF) Chapter 2
2/21 Lexical Analysis
(Subset Construction)
Slides (PDF) Chapter 2
2/26 Lexical Analysis
(DFA Minimization)
Slides (PDF) Chapter 2
2/28 Lexical Analysis
(Wrap Up)
Slides (PDF) Chapter 2
3/05 Lexer project overview 
3/07 Snow Day  Chapter 3
Phase III : Parsing (PDF) rubric-phase3a.txt rubric-phase3b.txt
3/12 Introduction to Parsing Part I  Slides (PDF)
3/14 Introduction to Parsing Part II  Slides (PDF)
3/19 Top-down Parsing Part I  Slides (PDF) Chapter 3
3/21 Snow Day 
4/2 Midterm Review  Slides (PDF)
4/09 Top-down Parsing Part II
Slides (PDF) Chapter 3
Phase IV : Parsing (PDF) rubric-phase4.txt
4/11 Bottom-Up Parsing Part I  Slides (PDF) Chapter 3
4/16 Bottom Up Parsing Part II 
Context Senstive Analysis
Slides (PDF)
Slides (PDF)
Chapter 3 and 4
4/18 LR Parsing
Part III
Slides (PDF) Chapter 3
4/23 Context Sensitive Analysis Project Lecture  Slides (PDF) Chapter 4
4/25 Context Sensitive Analysis II   Slides (PDF) Chapter 4 (Read up to Section 4.3)
4/30 Intermediate Representations  Slides (PDF) Chapter 5
Phase V : Code Generation (PDF) rubric-phase5.txt
5/02 Procedure Abstraction I   Slides (PDF) Chapter 6
5/07 Procedure Abstraction II   Slides (PDF) Chapter 6
5/09 Code Shape  Slides (PDF) Chapter 7
Final Study Guide (PDF)
5/14 Instruction Selection/Scheduling and Register Allocation  Slides (PDF) Chapters 11/12/13


Course Administration/Overview:

Course Syllabus

Online Documentation :

Cool Manual
Cool Overview
Cool Using Windows
The JLex scanner generator manual
Java Docs for cool-tree
Spim MIPS simulator
Engineering a Compiler Errata Page