Foundations of software analysis and verification (2020/2021)

Course code
4S008901
Name of lecturer
Isabella Mastroeni
Coordinator
Isabella Mastroeni
Number of ECTS credits allocated
6
Academic sector
ING-INF/05 - INFORMATION PROCESSING SYSTEMS
Language of instruction
Italian
Location
VERONA
Period
I semestre dal Oct 1, 2020 al Jan 29, 2021.

Lesson timetable

Go to lesson schedule

Learning outcomes

The goal of the course is that of providing the basic tools for understanding, designing and using analysis tools on computational systems aiming at verifying properties and/or extracting functionalities of systems under analysis. In the context of the CdS, the course provides context knowledge and cross capabilities useful for analyzing software systems both from the developer point of view and from the point of view of who aims at extracting functionalities from unknown systems (reverse engineering). At the end of the course, the student will be able to show knowledge and comprehension capabilities that allow him/her to elaborate and/or apply original ideas in the fields of software analysis and verification, potentially in research contexts; to solve problems of program analysis in new and not familiar fields, included in wider contexts, related to their field of study; to study and to search for study material concerning system and program analysis in autonomy.

Syllabus

Introduction to program analysis and verification.
Static analyses: Data-flow analysis based on CFG, Static analysis based on semantics (abstract interpretation), numerical analysis, alias and inter-procedural analysis (nods)
Dynamic analyses: Formal foundations of testing, Monitoring.
Verification: Model checking
Slicing: Transformation technique for program analysis and verification.

Reference books
Author Title Publisher Year ISBN Note
Seidl, Helmut, Wilhelm, Reinhard, Hack, Sebastian Compiler Design Analysis and Transformation (Edizione 1) Springer 2012 978-3-642-17548-0
Keith Cooper, Linda Torczon Engineering a Compiler, Second Edition (Edizione 2) Elsevier 2012 012088478X
Xavier Rival, Kwangkeun Yi Introduction to Static Analysis: An Abstract Interpretation Perspective MIT 2020
Edmund M Clarke, Orna Grumberg, Doron Peled, Doron Peleg Model Checking (Edizione 2) MIT 2018 9780262038836
Christel Baier and Joost-Pieter Katoen Principles of Model Checking MIT press 2008
F. Nielson, H. R. Nielson and C. Hankin Principles of Program Analysis Springer-Verlag 1999

Assessment methods and criteria

The exam is structured in two parts and may be completed in two different manners:
- Written exam + Project
- Written exam + Oral (mandatory for evaluation greater than 26)

The goal of the written exam is that of verifying a sufficient understanding of the notions presented during the course. The goal of the project is that of verifying the capability of retrieving study material and of re-elaborating independently and in autonomy the notions acquired during the course.
The goal of the oral exam is that of verifying an advanced understanding of the notions presented during the course and a clear capability of re-elaborating the studied notions.

In particular:
Written exam: set of questions on the whole program of the course
Project: detailed study of a specific problem or case study in the context of program analysis (written relation+presentation with slides)
Oral exam: questions on the whole program of the course