CISC 471 / 672 - Compiler Construction

Professor John Cavazos
Class Time MWF, 3:35-4:25pm
Room Number Purnell Hall 231
Office Hours M 1-2pm / W 12-1pm
Held in Smith Hall 412
Course Number CISC 471 / 672
Teaching Assistant Yuanfang Chen
TA Office Hours W 1-2pm / F 1-2pm
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 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  
9/02 Overview of Course Slides (PDF) Cool Programming Assignment (PDF)
9/07 View from 35000 feet   Slides (PDF) Chapter 1
9/09 Lexical Analysis
An Introduction
 
Slides (PDF) Chapter 2
Lexical Analysis Phase (PDF) rubric-phase2.txt
9/12 Lexical Analysis
(Thompson's Construction)
 
Slides (PDF) Chapter 2
9/14 Lexical Analysis
(Subset Construction)
 
Slides (PDF) Chapter 2
9/16 Lexical Analysis
(DFA Minimization)
 
Slides (PDF) Chapter 2
9/19 Phase 2 Discussion  Slides (PDF)
9/21 Lexical Analysis
(Wrap Up)
 
Slides (PDF) Chapter 2
9/23 Lexical Analysis
(DFA Minimization revisited and Wrap Up cont'd)
 
Slides (PDF) Chapter 2
9/26 Introduction to Parsing  Slides (PDF) Chapter 3 / Phase III : Parsing (PDF) rubric-phase3a.txt rubric-phase3b.txt
9/28 Introduction to Parsing
Part II
 
Slides (PDF) Chapter 3
9/30 Top-down Parsing  Slides (PDF) Chapter 3
10/03 Top-down Parsing
Part II
 
Slides (PDF) Chapter 3
10/05 Parsing Project Review  Slides (PDF)
10/07 JPMC Parsing ProjectReview  Slides (PDF)
10/10 Top-down Parsing
Part III
 
Slides (PDF) Chapter 3
10/12 Bottom-Up Parsing
Part I
 
Slides (PDF) Chapter 3
10/14 Bottom-Up Parsing
Part II
 
Slides (PDF) Chapter 3
10/17 LR Parsing
Part I
 
Slides (PDF) Chapter 3
10/19 LR Parsing
Part II
 
Slides (PDF) Chapter 3
10/21 LR Parsing
Part III
 
Slides (PDF) Chapter 3
10/24 Context Sensitive Analysis I   Slides (PDF) Chapter 4 / Midterm Study Guide (PDF)
Phase IV : Semantic Checking (PDF) rubric-phase4.txt
10/26 Context Sensitive Analysis II   Slides (PDF) Chapter 4
10/28 MidTerm Exam 
10/31 Context Sensitive Analysis III   Slides (PDF) Chapter 4
11/02 Context Sensitive Analysis IV   Slides (PDF) Chapter 4
11/04 Intermediate Representation I  Slides (PDF) Chapter 5
11/07 Intermediate Representation II  Slides (PDF) Chapter 5
11/09 Intermediate Representation III  Slides (PDF) Chapter 5
11/11 Phase IV Overview  Slides (PDF)
11/14 Procedure Abstraction I  Slides (PDF) Chapter 6
11/16 Class Cancelled 
11/18 Procedure Abstraction II  Slides (PDF) Chapter 6
Phase V : Code Generation (PDF) rubric-phase5.txt
11/21 Procedure Abstraction III  Slides (PDF) Chapter 6
11/28 Code Shape I  Slides (PDF) Chapter 7
11/30 Code Shape II   Slides (PDF) Chapter 7
12/02 Optimization I  Slides (PDF) Chapter 8 (pgs. 405-444)
12/05 Instruction Selection and Scheduling   Slides (PDF) Chapter 11 (pgs. 597-629) Chapter 12 (pgs. 651-660)
Phase V slides (PDF)
12/07 Register Allocation  Slides (PDF) Chapter 13
Final Study Guide (PDF)

 

Course Administration/Overview:

Course Syllabus

Online Documentation :


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