Spring 2020 Edition
This is an advanced graduate course in compiler technology. The course has several goals. First, it aims to develop a fundamental understanding of the major approaches to program analysis and optimization. Second, it aims to help students understand published research on various novel compiler techniques. Third, during the duration of the course, the students will solve a significant compiler problem, which includes reading the literature and implementing the solution in a real-world compiler, such as LLVM. Finally, the students will learn about recent research directions.
3/24/2020: Due to COVID-19, the second part of the course is held fully on-line. Check Piazza for the details.
3/12/2020: Due to COVID-19, we have adjusted the schedule and moved the midterm after the spring break
1/20/2020: The Piazza page is up!
1/15/2020: The website is up!
This is an advanced graduate reasearch-oriented course. It will include lectures, reading literature and original materials, and a substational research project. We will compute the final grade using the following table:
Activity | Grade | Details |
---|---|---|
Miniquizzes | 10% |
|
Midterm | 20% |
|
In-Class Exam | 20% |
|
Project | 50% |
|
Extra Credit | 10% |
|
Date | Topic | Notes | |
---|---|---|---|
1/21 | Introduction and Control-Flow Review |
Slides | |
1/23 | SSA 1 |
Slides | |
1/28 | SSA 2 |
Slides | |
1/30 | SSA 3Project 1 out (skeleton) |
Slides | |
2/4 | SSA Optimizations |
Slides | |
2/6 | Iterative Dataflow Framework 1 |
Slides | |
2/11 | Iterative Dataflow Framework 2 |
Slides | |
2/13 | Iterative Dataflow Framework 3Project 1 due. |
Slides | |
2/18 | Iterative Dataflow Framework 4Project 2 out. |
Slides | |
2/20 | Iterative Dataflow Framework 5 |
Slides | |
2/25 | Dependence Analysis 1 |
Slides | |
2/27 | Dependence Analysis 2 |
Slides | |
3/3 | Dependence Transformations 1 |
Slides | |
3/5 | Dependence Transformations 2 |
Slides | |
3/10 | Compiler Testing and Validation |
Slides | |
3/12 |
|
||
3/17 | Spring Break (no class) |
||
3/19 | |||
3/24 | Pointer Analysis 1 |
Slides | |
3/26 | Pointer Analysis 2 |
Slides | |
3/31 | Pointer Analysis 3 |
Slides | |
4/2 | Interprocedural Analysis 1 |
Slides | |
4/7 | Interprocedural Analysis 2 |
Slides | |
4/9 | Midterm |
||
4/14 | Abstract Interpretation 1 |
Slides | |
4/16 | Abstract Interpretation 2 |
Slides | |
4/21 | Compilers in the World of Machine Learning |
Slides | |
4/23 | Efficient Compiling: JIT, Virtual Machines |
Slides | |
4/28 | Student Projects |
||
4/30 | Student Projects |
||
5/5 | Exam time |