CMSC 331: Introduction to Compiler Construction

Fall 2017

Doug Szajda

TR 12:00 - 1:15 pm, Jepson 231

Consulting Lab: W 3:00 - 3:50 pm, Jepson G22


Note to colleagues who might want to borrow this material for their own courses: Almost all of the material here, including lecture slides, assignments, and even the overall organization of the course, are based on material provided by Professor Alex Aiken of Stanford University. The slides, for example, are based on an integration of material from slides he has used in the compiler construction course at Stanford, and lectures used in the online version of that course. Though I have added to this material, any use of it is borrowing from him more than from me. As such, you should ask him for permission to use his material.


(Very) Tentative Lecture Schedule (subject to much change, and some addition):

Date Topic Assignments Due Readings/Discussions/Assignments (do readings before class!) Slides
Tues Aug 29 Course Overview Lecture 1
Thurs Aug 31 Cool (Classroom Object-Oriented Language), Course Project Lecture 2
Tues Sept 5 Lexical Analysis Programming Project 1
Thurs Sept 7 More Lexical Analysis Reading: Selected topics from Chapter 3 (as covered in lecture) Lecture 3
Tues Sept 12 Regular Expressions and Formal Languages Written Assignment 1
Thurs Sept 14 Implementing Lexers with Finite Automata Reading: Begin reading Chapter 4 Lecture 4
Tues Sept 19 Implementing Lexers with Finite Automata (cont.)
Thurs Sept 21 Context-Free Grammars Programming Project 1 Programming Project 2 Lecture 5
Tues Sept 26 Top Down Parsing
Recursive Descent Parsing
Written Assignment 1 Written Assignment 2 Lecture 6
Thurs Sept 28 Abstract Syntax Trees
Bottom-Up parsing
Lecture 7
Tues Oct 3
Thurs Oct 5 Bottom-Up Parsing (cont.) First Midterm Exam distributed Lecture 8
Tues Oct 10 Semantic Analysis
Type Checking
Lecture 9
Thurs Oct 12 Type Checking (cont.) Programming Project 2 due Lecture 10
Tues Oct 17 Fall Break
Thurs Oct 19 Run-time Environments First Midterm Exam due
Written Assignment 2 due
Programming Project 3
Written Assignment 3
Lecture 11
Tues Oct 24 Run-time Environments (cont.) Lecture 12
Thurs Oct 26 Code Generation Lecture 13
Tues Oct 31
Thurs Nov 2 Local Optimization Written Assignment 3 due Lecture 14
Tues Nov 7 Global Optimization Lecture 15
Thurs Nov 9 Register Allocation Programming Project 3 due Programming Project 4 Lecture 16
Tues Nov 14 Automatic Memory Management Second Midterm Exam distributed Lecture 17
Thurs Nov 16 Java Written Assignment 4 Lecture 18
Tues Nov 21 Lecture 19
Thurs Nov 23 Thanksgiving Break
Tues Nov 28
Thurs Nov 30 Superoptimization Second Midterm Exam due
Written Assignment 4 due
Lecture 20
Tues Dec 5 Programming Project 4 due Genetic Algorithms Intro.
Thurs Dec 7
Mon Dec 11 Final Exam (2:00 - 5:00 pm)