Instructor: Mooly Sagiv
TA: Yotam Feldman
This is a basic course in Programming Language Implementations. It covers basic topics such fundamentals of compilers and interpreters; symbol tables; lexical analysis, syntax analysis, semantic analysis, code generation, and optimizations for general purpose programming languages. It also covers advanced topics such compilation infrastructures and static analysis
The course is inspired by courses such as CIS 341 at Upenn taught by Steve Zdancewic. Our course and the projects are taught in Java. A lot of material is taken from the K31 Compiler Course at the University of Athens taught by Yanis Smardakis Finally, we also follow some of the lessons learned in the university of Washington Compiler course taught by Hal Perkins
Prerequisites: Computer Models and Operating Systems.
The grade of the course will be based on 70% homework assignments, and 30% exam.
Material for the recitation and exercises is available here.
Lecture | Recitation | Exercise | |
20/10 Overview
PPTX
Abstract Syntax PPTX Lecture Video |
22/10 MiniJava and AST | ||
27/10
Assembler/Linker and Loader
PPTX
X86 PPTX Lecture Video |
29/10 Visitor patterns and resolving method names | Ex. 1 - Variable and method renaming
Due 19/11/2020 |
|
3/11 Intermediate Representation PPTX | 5/11 Symbol Tables | ||
10/11 LLVM PPTX | 12/11 LLVM | ||
17/11 Code Generation PPTX | 19/11 LLVM Code Generation | Ex. 2 - LLVM Code Generation
Due 10/12/2020 | |
24/11 Object Oriented Code Generation PPTX | 26/11 LLVM Object Oriented Code Generation | ||
1/12 Semantic Analysis PPTX | 3/12 Semantic Analysis and Type Checking |
||
8/12 Static Analysis PPTX | 10/12 Static Analysis |
Ex. 3 - Semantic Analysis
Due 30/12/2020 |
|
15/12 Lexical Analysis PPTX | 17/12 Lexical Analysis | ||
22/12 Top Down Parsing PPTX | 24/12 Top-Down Parsing | ||
29/12 Bottom-Up Parsing PPTX | 31/12 Bottom-Up Parsing | Ex. 4 - Lexing and Parsing
Due 14/1/2021 | |
5/1 Dynamic Memory Allocation and Garbage Collection PPTX | 7/1 x86 Code Generation and Activation Records | 12/1 Course Summary PPTX | 14/1 Exam Reversals |
In the course's Moodle page.