Applied Program Analysis
Instructor: Venkatesh Vinayakarao
Term: Jan - Apr 2020

Welcome to the Applied 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 investigate, experiment and understand the variety of tools available for analysis of programs written in prominent high-level languages.

Key Learning Objectives

Given the task of analyzing programs, at the end of this course, we would be able to answer the following questions:
  • Which tools are widely used to analyze programs?
  • What is the scope and limitations of current state of program analysis tools?


Tools in Program Analysis
Features and Limitations - A Survey
Fundamental Tools for Program Analysis
Call-graph Construction
Abstract Interpreters
Type-Based Systems
Developer’s Perspectives on Tools
What developers want from Program Analysis?
Why Don’t Software Developers Use Static Analysis Tools to Find Bugs?
Tools for Data Driven Program Analysis
Naturalness of source code
Predicting Program Properties from "Big Code"
Tool Demo - I
Hand-on Demo of popular tools.
Tool Demo - II
Hand-on Demo of popular tools.

InstrumentMax Marks
Survey Assignment20%
Tool Demo 120%
Tool Demo 220%
Readings Assignment 30%
Poster Assignment10%

Fundamentals of Program Analysis.


  • [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

If you are not having fun, you are not the best student you can be!