Note: This is an archival version of the course. Next edition is Compiler Construction 2018
— — — — — — — — — — — — — —
Instructor: Hossein Hojjat
Email: hh at cs rit edu
Office hours (GOL-3545):
Lectures: MoWeFr 9:00AM-9:50AM (GOL-3455)
Final Exam: 5/15/2017 (8 - 10 AM) , Place: GOL-3455
Description & Policies:
CS Common Course Policies
Grading Policies
Assignment & Homework Policies
Acknowledgements:
Portions of this course material based upon similar courses offered by Viktor Kuncak
Book:
Modern Compiler Implementation in Java
Language for Compiler Project:
Extended MiniJava (eMiniJava)
Monday 01/23 | Lecture 1: Course Overview | Slides |
Wednesday 01/25 | Lecture 2: Describing Syntax | Slides |
Friday 01/27 | Lecture 3: Introduction to Regular Expressions | Slides |
Monday 01/30 | Lecture 4: Manual Construction of Lexers | Slides |
Wednesday 02/01 | Lecture 5: Automatic Construction of Lexers | Slides |
Friday 02/03 | Lecture 6: DFA vs. NFA | Slides |
Monday 02/06 | Lecture 7: Regular Expression-Automata Conversion | Slides |
Wednesday 02/08 | Lecture 8: DFA Minimization | Slides |
Firday 02/10 | Lecture 9: Context-Free Grammars | Slides |
Monday 02/13 | Lecture 10: Ambiguous Grammars | Slides |
Wednesday 02/15 | Lecture 11: Chomsky Normal Form (CNF) | Slides |
Friday 02/17 | Discussion of solutions to Homework 1 |
Monday 02/20 | Lecture 12: Cocke-Younger-Kasami (CYK) | Slides |
Wednesday 02/22 | Lecture 13: Grammar Transformations | Slides |
Friday 02/24 | Lecture 14: Top-Down vs. Bottom-up Parsing | Slides |
Monday 02/27 | Lecture 15: Recursive-Descent Parsers | Slides |
Wednesday 03/01 | Lecture 16: Implementing Recursive-Descent Parsers | Slides |
Friday 03/03 | Lecture 17: Introduction to Shift/Reduce Parsing | Slides |
Monday 03/06 | Lecture 18: LR(0) Parsing | Slides |
Wednesday 03/08 | Lecture 19: SLR and LR(1) Parsing | Slides |
Friday 03/10 | Lecture 20: Parsing Wrap-up | Slides |
Spring Break - No Classes
Monday 03/20 | Lecture 21: Introduction to Name Analysis | Slides |
Wednesday 03/22 | Lecture 22: Name Analysis Implementation | Slides |
Friday 03/24 | Lecture 23: Introduction to Type Checking | Slides |
Monday 03/27 | Lecture 24: Type Checking Implementation | Slides |
Wednesday 03/29 | Discussion of solutions to Homework 2 | |
Friday 03/31 | Lecture 25: More Type Rules | Slides |
Monday 04/03 | Lecture 26: Subtyping | Slides |
Wednesday 04/05 | Lecture 27: More Subtyping Rules | Slides |
Friday 04/07 | Lecture 28: Introduction to Code Generation | Slides |
Monday 04/10 | Lecture 29: Code Generation for Expressions | Slides |
Wednesday 04/12 | Discussion of solutions to Homework 3 | |
Friday 04/14 | Lecture 30: A Primer on Jasmin | Slides |
Monday 04/17 | Lecture 31: Code Generation for Control Structures | Slides |
Wednesday 04/19 | Lecture 32: Control Structures: Efficient Translation | Slides |
Friday 04/21 | Lecture 33: Introduction to Optimizations | Slides |
Monday 04/24 | Lecture 34: Control Flow Graphs | Slides |
Wednesday 04/26 | Lecture 35: Live Variable Analysis | Slides |
Friday 04/28 | Discussion of solutions to Homework 4 |
Monday 05/01 | Lecture 36: Available Expressions Analysis | Slides |
Wednesday 05/03 | Lecture 37: Data-flow Analysis Framework | Slides |
Friday 05/05 | Lecture 38: More Data-flow Analysis | Slides |
Monday 05/08 | Lecture 39: Loop Optimizations | Slides |
Wednesday 05/10 | Lecture 40: Register Allocation | Slides |
Friday 05/12 | Course Conclusion |