Mon-Fri 8:00 - 9:45am in SN115. IN-PERSON.
Class to be held in person! A working draft of the syllabus can be found here!
Office Hours
Kaki Ryan TueThu 2:00pm - 4:00pm FB342 (or FB352)
Will Zahrt Weekdays 10:00am - 12:00pm SN142
Course Links
Assignments
Gradescope (Enrollment code is 7EGPEG)
Optional Textbook 1 (Compilers: Principles, Techniques, and Tools by Alfred Aho, Monica Lam, Favi Sethi and Jeffrey Ullman. 2nd Edition).
Optional Textbook 2 (Programming Language Processors in Java: Compilers and Interpreters, by David Watt and Deryck Brown).
A huge thank you to and credit to Jan Prins and Syed Ali for much of this material and assistance in preparing this course. It wouldn’t have been possible without them.
Course Schedule
===================
Week 1
Monday 6/24:
- FDOC!! :)
- Lecture 0 – Welcome! What is a Compiler?
- Slides
- Optional Reading: Book #1 - Chapter 1. Book #2 - Chapter 3 (pp. 55 - 70).
Tuesday 6/25
Wednesday 6/26
Thursday 6/27
- Lecture 3 – EBNF Grammars + Recursive Descent
- Slides
- Optional Reading: Book 1 - Section 4.2, 4.3 and 4.4 (pp. 197 - 231). Book 2 - Section 4.3.3 and 4.3.4 (pp. 89-109)
Friday 6/28
- Lecture 4 – Finish Lexical Analysis
- Slides
- Quiz 1 in class!
- Optional Reading Book 1 - Section 3.1, 3.3 and 3.4 (pp. 109-115 and 116-135). Book 2 - Section 4.5 (pp. 118-124)
===================
Week 2
Monday 7/1
- Lecture 5 – Scanner Generators, Start ASTs
- Slides
- Optional Reading Book 1 - Section 3.5-3.7 (pp. 140-166). Book 2 - Section 4.4 (pp. 109 - 118)
Tuesday 7/2
Wednesday 7/3
- Lecture 7 – AST Implementation Details, The Visitor Model
- Slides
Thursday 7/4
Friday 7/5
- Lecture 8 – Bottom-up Parsing
- Slides
- Quiz 2 in class!
- Optional Reading Book 2 - Section 4.3.1 (pp. 84-87)
===================
Week 3
Monday 7/8
- Lecture 9 – Intro to Identification
- Slides
- Optional Reading Book 2 - Section 5.1 (pp. 136-149)
Tuesday 7/9
- Lecture 10 – More Identification, Intro to Type Checking
- Slides
- PA3 Writeup. Due 7/16 at 11:59pm.
- PA3 Starter Code
- Optional Reading Book 2 - Section 5.2, 5.3 (pp. 150-162)
Wednesday 7/10
Thursday 7/11
- Lecture 12 – Hardware + Runtime Organization
- Slides
Friday 7/12
- Lecture 13 – x86 Details
- Slides
- Quiz 3 in class!
===================
Week 4
Monday 7/15
- Lecture 14 – PA3 Review, Code Generation Intro
- Slides
- Optional Reading Book 2 - Section 6.1-6.6 (pp. 173-229)
Tuesday 7/16
- Lecture 15 – Branch Generation, Instruction Encoding
- Slides
Wednesday 7/17
Thursday 7/18
- Lecture 17 – Code Generation Wrap-up
- Slides
Friday 7/19
- Lecture 18 – Intro to Dataflow Analysis
- Slides
- Quiz in Class!
- Optional Reading Book 1 - Section 8.4 (pp. 526-531)
===================
Week 5
Monday 7/22
- Lecture 19 – Data + Expression Liveness Analysis
- Slides
- Written Assignment 4. Due 7/25 at 11:59pm
- Optional Reading Book 1 - Section 9.2 (pp. 618-631)
Tuesday 7/23
Wednesday 7/24
- Lecture 21 – Register Allocation continued
- Slides
Thursday 7/25
- Lecture 22 – LLVM, Retargeting, JIT and Emulation
- Slides
- LDOC! :)
===================
Week 6
Monday 7/29
Tuesday 7/30