CS 738: Advanced Compiler Optimizations (2020-21 Ist Semester)

This course aims to teach topics in program analysis and compiler optimizations.

Code of Ethics

Any report/program/assignment you submit must clearly distinguish your contribution from others (webpages, softwares, report, discussions with other students). The penalty for copying in any form will be severe.

Announcements

Important: All emails' subject line should begin with "[CS738]". Email not complying to this rule will NOT be entertained.

  1. We shall use LLVM for Assignments and Project. Download and install it. Also, go through Web-page/Tutorials to familiarize yourself with LLVM.
  2. If you are registered for the course, subscribe to CS738 on Canvas

Topics Covered and Slides

The slides are not suitable for taking prints as there is a lot of redundancy due to overlays. Use handouts if you really need a print.

The videos for the course are available through the Canvas page.

0. First Course Handout [FCH]
1. Introduction [handouts] [slides]
2. Overview of Optimizations [handouts] [slides]
3. Data Flow Analysis [handouts] [slides]
4. Data Flow Analysis (contd...) [handouts] [slides]
5. Data Flow Analysis Foundations [handouts] [slides]
6. DFA Foundations (contd ...) [handouts] [slides]
7. Flow Graph Theory [handouts] [slides]
8. Constant Propagation [handouts] [slides]
9. SSA [handouts] [slides] [paper]
10. SSA (contd ...) [handouts] [slides]
11. Conditional Constant Propagation [handouts] [slides] [paper]
12. SSA PRE [handouts] [slides] [paper]
13. SSA PRE Example [handouts] [slides]
14. Interprocedural Analysis [handouts] [slides]
15. Interprocedural Analysis: Functional Approach [handouts] [slides]
16. Interprocedural Analysis: Call-strings Approach [handouts] [slides] By Prof Uday
17. Pointer Analysis [handouts] [slides] [Anderson's][Steensgaard's] [Yanniss's Tutorial]
18. Types and Program Analysis [handouts] [slides]
19. Untyped Lambda Calculus [handouts] [slides]
20. Typed Arithmetic Expressions [handouts] [slides]
21. Simply Typed Lambda Calculus [handouts] [slides]
22. Type-based Points-to Analysis [handouts] [slides] [Steensgaard's] [Manuvir's]

Assignments

There will be short assignments to give you a chance to apply the lecture material. Assignments will have some written and some programming tasks.

Course Project

The project is a vital component of this course. A group of two or three students will work for the project.

Course Outline

The course will mainly cover topics from the following list (not necessarily in the same order). Not all topics listed below will be covered, and depending on class feedback, new topics may be added.

Evaluation Scheme

Credit

Class Participation and Quizzes 05%
Assignments 10%
Mid semester exam 20%
End semester exam 30%
Course Project 35%
(Breakup: Proposal: 5% Report and Presentation: 10% Implementation: 20%)

Take me to the Top