Welcome to the Program Analysis course! Software development has become an essential part of our daily life. Several systems around us including transportation, communication, healthcare, education and entertainment are largely enabled or supported by software. Yet, software development remains to be a human task that is prone to errors. Hence, our ability to analyze programs is very important.
In this course, we introduce several popular approaches to program analysis. We will discuss both static and dynamic analysis. We start with the well-known program representations such as Abstract Syntax Trees and Control Flow Graph. We will discuss other representations such as Dependence Graphs, and Intermediate Representations (SSA and Three Address Format). We will cover the classic Data Flow Analysis framework, Points-To Analysis (Anderson and Steensgard's Algorithm), Flow and Context Sensitivity as part of static analysis. As part of dynamic analysis, we would briefly discuss Monitor Oriented Programming. A series of guest lectures on advanced data flow analysis, program slicing and runtime verification is also planned.
The course will be a mix of both theory and practice. There will be coding assignments and hands-on tutorials on few analysis frameworks. While advanced programming skills are not required, students must be familiar with core Java to complete the assignments. There are no other pre-requisites to this course.
Key Learning Objectives
At the end of this course, you should be able to:
- Understand and implement static and dynamic analysis
- Perform data flow analysis (using Eclipse JDT and Soot).
- Weave monitors in Java code for runtime verification (using AspectJ and JavaMOP).
|Assignments 2, 3 (15% each)||30%|
|Quiz (5 * 2%)||10%|
Students must bring reasonable familiarity to programming, preferably in Java.
- [AMMS] Static Program Analysis, Anders Møller and Michael I. Schwartzbach
- [PPA] Principles of Program Analysis, Flemming Nielson, Hanne R. Nielson and Chris Hankin
- [Dragon] Principles, Techniques, & Tools, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
- [DFA] Data Flow Analysis: Theory and Practice, Uday P. Khedkar, Amitabha Sanyal and Bageshri Karkare