I will strive to get slides uploaded before lecture

This schedule is tentative, based on previous offerings. We may change topics. We will discuss any changes throughout class and we will keep this schedule up to date

Unless explicitly mentioned, Readings will refer to Engineering a Compiler (EAC), see the references page

Module 1: Lexing

Date Topic Slides Readings
Mon, April 3 Welcome! slides Overview page
Wed, April 5 Introduction to Compilers slides EAC Chapter 1
Fri, April 7 Introduction to Lexical Analysis (ASYNCHRONOUS LECTURE)    
Mon, April 10 Regular Expressions slides  
Wed, April 12 Implementing Scanners with REs slides  
Fri, April 14 Token Actions slides  

Module 2: Parsing

Date Topic Slides Readings
Mon, April 17 CFGS and Derivations slides EAC Chapter 3.2
Wed, April 19 Parse Trees and ambiguous grammars slides EAC Chapter 3.2
Fri, April 21 Associativity and top-down parsing slides EAC Chapter 3.3 (first half)
Mon, April 24 Left recursion and lookahead in parsing (ASYNCHRONOUS LECTURE) slides EAC Chapter 3.3 (first half)
Wed, April 26 CLASS CANCELED    
Fri, April 28 Recursive descent parsers and symbol tables slides EAC Chapter 3.3 (second half)
Mon, May 1 Symbol Tables and parser generators slides ply documentation
Wed, May 3 Parser Generators slides ply documentation

Module 3: Intermediate representations

Date Topic Slides Readings
Fri, May 5 Intro to IRs and ASTs slides EAC Chapter 5.1
Mon, May 8 MIDTERM    
Wed, May 10 ASTs and type checking slides EAC Chapter 4.2
Fri, May 12 ASTs and type checking 2 slides EAC Chapter 4.2
Mon, May 15 ASTs and type checking 3 slides EAC Chapter 5.3
Wed, May 17 Converting statements into 3 address code slides EAC Chapter 5.3
Fri, May 19 Converting statements into 3 address code slides EAC Chapter 5.3

Module 4: Optimizations

Date Topic Slides Readings
Mon, May 22 Midterm overview and intro to optimizations ON CANVAS EAC Chapter 8.1
Wed, May 24 Optimization overview slides EAC Chapter 8.1
Fri, May 26 Basic blocks and local value numbering slides EAC Chapter 8 (up to 8.5)
Wed, May 31 Local value numbering 2 slides EAC Chapter 8 (up to 8.6)
Fri, June 2 Loop transforms slides EAC Chapter 7.8
Mon, June 5 Neal and Rithik guest lecture Rithik  
Wed, June 7 Loop transforms 2 slides EAC Chapter 7.8
Fri, June 9 Class review slides  
IF TIME Live variable Analysis   EAC Chapter 8.6.1

Final

Our final is scheduled for Monday, June 12 8:00–11:00 a.m.