Instructor: Hossein Hojjat
Email: hh at cs rit edu
Office hours (GOL-3545):
Lectures: MoWeFr 9:05AM-10:00AM (GOL-3560)
Final Exam: 05/02/2018 (8:00 A - 10:00 AM) , Place: GOL-3560
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)
Wednesday 01/17 | Lecture 1: Course Overview | Slides |
Friday 01/19 | Lecture 2: Describing Syntax | Slides |
Monday 01/22 | Lecture 3: Introduction to Regular Expressions | Slides |
Wednesday 01/24 | Lecture 4: Manual Construction of Lexers | Slides |
Friday 01/26 | Lecture 5: Automatic Construction of Lexers | Slides |
Monday 01/29 | Lecture 6: DFA vs. NFA | Slides |
Wednesday 01/31 | Lecture 7: Building Efficient Lexers | Slides |
Friday 02/02 | Lecture 8: Introduction to Syntax Analysis | Slides |
Monday 02/05 | Lecture 9: Ambiguous Grammars | Slides |
Wednesday 02/07 | Lecture 10: Top-Down vs. Bottom-up Parsing | Slides |
Friday 02/09 | Lecture 11: Grammar Transformations | Slides |
Monday 02/12 | Lecture 12: Recursive-Descent Parsers | Slides |
Wednesday 02/14 | Lecture 13: Predictive Parsing Table Construction | Slides |
Friday 02/16 | Lecture 14: Introduction to Shift/Reduce Parsing | Slides |
Monday 02/19 | Lecture 15: LR(0) Parsing | Slides |
Wednesday 02/21 | Lecture 16: SLR, LR(1) and LALR | Slides |
Friday 02/23 | Lecture 17: Chomsky Normal Form (CNF) | Slides |
Monday 02/26 | Lecture 18: Cocke-Younger-Kasami (CYK) | Slides |
Wednesday 02/28 | Lecture 19: Introduction to Name Analysis | Slides |
Friday 03/02 | class cancelled due to snow |
Monday 03/05 | Lecture 20: Name Analysis Implementation | Slides |
Wednesday 03/07 | Midterm Review | |
Friday 03/09 | Midterm Exam |
Spring Break - No Classes
Monday 03/19 | Lecture 21: Introduction to Type Checking | Slides |
Wednesday 03/21 | Lecture 22: Type Checking Implementation | Slides |
Friday 03/23 | Lecture 23: More Type Rules | Slides |
Monday 03/26 | Lecture 24: Subtyping | Slides |
Wednesday 03/28 | Lecture 25: More Subtyping Rules | Slides |
Friday 03/30 | Lecture 26: Introduction to Code Generation | Slides |
Monday 04/02 | Lecture 27: Code Generation for Expressions | Slides |
Wednesday 04/04 | Lecture 28: A Primer on Jasmin | Slides |
Friday 04/06 | Lecture 29: Code Generation for Control Structures | Slides |
Monday 04/09 | Lecture 30: Control Structures: Efficient Translation | Slides |
Wednesday 04/11 | Lecture 31: Introduction to Optimizations | Slides |
Friday 04/13 | Lecture 32: Control Flow Graphs | Slides |
Monday 04/16 | Lecture 33: Live Variable Analysis | Slides |
Wednesday 04/18 | Lecture 34: Available Expressions Analysis | Slides |
Friday 04/20 | Lecture 35: Data-flow Analysis Framework | Slides |
Monday 04/23 | Lecture 36: Range Analysis, Initialization Analysis | Slides |
Wednesday 04/25 | Lecture 37: Loop Optimizations | Slides |
Friday 04/27 | Lecture 38: Register Allocation | Slides |