Search for contacts, projects,
courses and publications

Software Analysis

People

Furia C. A.

Course director

Paganoni M.

Assistant

Description

This course describes software analysis techniques, highlights their theoretical underpinnings, and presents tools that make them available in practice to the working software engineer. The presentation includes techniques spanning different levels of correctness guarantees, automation, and applicability. The main covered topics are: axiomatic semantics and deductive verification; static analysis and type systems; model checking and predicate abstraction; symbolic execution; and dynamic analysis.

Objectives

Developing software that behaves as expected is challenging not just in practice but also due to the intrinsic complexity of analyzing software properties automatically. Software analysis offers techniques that can work around these hurdles – guaranteeing correctness, or helping find incorrect behavior.

Teaching mode

In presence

Learning methods

The course includes assignments where students apply open-source software analysis tools in practice – understanding the trade-offs involved in making software verification technology applicable in realistic settings.

Examination information

The course's grade is determined by a combination of assignments/small projects introduced during the course and about the main topics of the course, and by a final exam.

Bibliography

Education