CISC 471 Compiler Design / 672 Compiler Construction

Professor John Cavazos
Class Time MW, 5:00-6:15pm
Room Number ISE 205
Office Hours M/W 3-4pm
Held in Saxby's Coffee (Amstel Ave)
Course Number CISC 471/672
Teaching Assistant Fanchao Meng (
TA Office Hours Thursday 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) Phase I: Cool Programming Assignment (PDF)
2/07 View from 35000 feet   Slides (PDF) Chapter 1
2/12 Cool Tutorial  A Basic Cool Program (
2/14 Lexical Analysis
An Introduction
Slides (PDF) Chapter 2
2/19 Lexical Analysis
(Thompson's Construction)
Slides (PDF) Chapter 2
Phase II: Lexical Analysis Phase (PDF) rubric-phase2.txt
2/21 Lexical Analysis
(Subset Construction)
Slides (PDF) Chapter 2


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