| cs618-2020-21 Lecture Material | |||||||||||
| Lecture Time: 3:30 to 5:00 pm (Slot 11) | |||||||||||
| We have moved to moodle. Please check your batch (Tuesday or Friday) for the meeting | |||||||||||
| There will be no live lectures. Pre-recorded lecture videos will be released in the beginning of the week and lecture slots will be used for live discussions which will be supplemented by moodle discussions. Use the meeting slots to ask questions and clarify doubts. Additionally, you can ask questions on Moodle. | |||||||||||
| Week | Lecture Day | Module | Topics | Lecture Videos | Lecture Slides | Interactive Tutorial (Moodle) | |||||
|
0
|
Tuesday 11 Aug |
Introduction and
Motivation
|
Examples of optimization
and analyses, course Overview
|
The
lecture begin with a welcome, and then
motivate the need of a systematic analysis technique
by illustrating the classical
optimizations, which is
followed by examining a contemporary optimization
of heap memory. Then the
lecture tries to answer the question what
is program analysis,
The lecture concludes with the course
details.
|
|||||||
| Friday 14 Aug | |||||||||||
|
1
|
Tuesday 18 Aug |
Bit Vector Data Flow
Frameworks
|
Live variables analysis,
Available expressions analysis, Observations about
data flow analysis, Reaching definitions analysis,
Anticipable expressions analysis, A taxonomy of data
flow analysis
|
The
first lecture in this module introduces bit vector
data flow frameworks with the help of live
variables analysis.
It introduces the concepts of data flow information,
data flow equations, the process of solving the data
flow equations, the soundness and precision of
solutions, the role of initialization, and the
ineaxtness of data flow analysis. For convenience,
the lecture has been divided into four parts: Live
Variables Analysis Part A,
Live
Variables Analysis Part B,
Live
Variables Analysis Part C,
and Live
Variables Analysis Part D.
The second lecture in this module builds on the concepts of bit vector data flow frameworks with the help of available expressions analysis. In particular, it shows that the data flow equations continue to have the same form. It also explains the role of boundary information and describes the soundness and precision requirements of available expressions analysis. The lecture has been divided into three parts: Available Expressions Analyisis Part A, Available Expressions Analysis Part B, Available Expressions Analysis Part C. The third lecture of the module introduces reaching definitions analysis and anticipable expressions analysis and concludes the module by identifying the common features of bit vector frameworks. |
|||||||
| Friday 21 Aug | |||||||||||
|
2
|
Tuesday 25 Aug | ||||||||||
| Friday 28 Aug | |||||||||||
|
3
|
Tuesday 1 Sep | ||||||||||
| Friday 4 Sep | |||||||||||
|
4
|
Tuesday 8 Sep |
Theoretical Abstractsions
in Data Flow Analysis
|
Introduction to constant
propagation, Lattice theoretic modeling of data flow
information, Flow functions, monotonicity and
distributivity, MoP and MFP assignments, Complexity of
data flow analysis, Worklist based methods
|
The
first
lecture in this module
begins by motivating the need of a more general
setting which is then followed by a digression on
lattices.
The second lecture in this moduls explains lattice theory and has been divided in three parts: Lattice Theory Part A, Lattice Theory Part B, Lattice Theory Part C. The third lecture explains the general theory behind setting up the wolrld of data flow values in terms of lattice and formalizes the notions of soundness and precision of the abstraction created by data flow values. It has been divided into four parts: Data Flow Values Part A, Data Flow Values Part B, Data Flow Values Part C, and Data Flow Values Part D. The fourth lecture in this module explains the flow functions and the solutions of data flow analysis (Part A, Part B, Part C) and the algorithms of data flow analysis. |
|||||||
| Friday 11 Sep | |||||||||||
|
5
|
Tuesday 15 Sep | ||||||||||
| Friday 18 Sep | |||||||||||
|
6
|
Tuesday 22 Sep | ||||||||||
| Friday 25 Sep | |||||||||||
| |
Monday 28 Sep | ||||||||||
| Friday 2 Oct | Holiday | ||||||||||
|
7
|
Tuesday 6 Oct |
Midsem Week
|
|||||||||
| Friday 9 Oct | |||||||||||
|
8
|
Tuesday 13 Oct |
General Data Flow
Frameworks
|
Constant propagation
revisited,Strongly live variables analysis, Pointer
analysis, Anderson's and Steensgard's approaches,
Flow-sensitive pointer analysis, Liveness-based
pointer analysis, Liveness analysis of heap data
|
We
have deliberately slowed down by two weeks in
response to the request of a dead week before the
mid-senester examination and general request to
reduce the teaching material for the online mode.
The third module of the course begins by exploring precise modelling of general frameworks and introduces the loop closure bound and separability of flow functions. Then we complete the story of constant propagation. The second lecture in this module covers strongly live variables analysis and the third lecture introduces pointer analysis (Part A, Part B, Part C, and Part D). This is followed by studying flow-insensitive pointer analysis (Part A and Part B). The final lecture covers flow-sensitive pointer analysis (Part A, Part B, and Part C). a |
|||||||
| Friday 16 Oct | |||||||||||
|
9
|
Tuesday 20 Oct | ||||||||||
| Friday 23 Oct | |||||||||||
|
10
|
Tuesday 27 Oct | ||||||||||
| Friday 30 Oct | Holiday | ||||||||||
| Saturday 31 Oct |
Interprocedural Data Flow
Analysis
|
Introduction to
interprocedural data flow analysis, Functional
Approach, Call Strings base method, Value context
based interprocedural analysis, A unified view of
interprocedural analysis
|
|||||||||
|
11
|
Tuesday 3 Nov | ||||||||||
| Friday 6 Nov | |||||||||||
|
12
|
Tuesday 10 Nov | ||||||||||
| Friday 13 Nov | |||||||||||
|
13
|
Tuesday 17 Nov | ||||||||||
| Friday 20 Nov | Wrap Up | ||||||||||