Analysis of information systems (2017/2018)

Course code
4S003735
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
Period
I sem. dal Oct 2, 2017 al Jan 31, 2018.

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 (static and dynamic) 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 computational 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, potentially in research contexts; to solve problems in new and not familiar fields, included in wider contexts, related to their field of study; to study and to search for study material in autonomy.

Syllabus

Formal basis: Lattice theory, fix-point theory, abstract interpretation, models and semantcs of programs.
Static analysis: CFG-based analyses and monotone framework, distributive Data-flow analyses, numerical analyses and alias analysis, inter-procedural analysis, SSA.
Slicing: Formal framework, Weiser's algorithm, HPR algorithm, forward vs backward slicing.
Dynamic analysis: Overview on debugging, profiling and testing, disassembly, decompiling; Emulation and virtualization, Testing, Monitoring.

Lab: Introduction and use of tools for testing and dynamic analysis of code.

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
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman Compilers: Principles, Techniques, and Tools (2nd Edition) Pearson 2007 9780321486813
Keith Cooper, Linda Torczon Engineering a Compiler, Second Edition (Edizione 2) Elsevier 2012 012088478X
F. Nielson, H. R. Nielson and C. Hankin Principles of Program Analysis Springer-Verlag 1999
Christian Collberg, Javis Nagra Surreptitious Software (Edizione 1) Addison-Wesley Professional 2009 978-0-321-54925-9

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

Student opinions - 2016/2017


Statistics about transparency requirements (Attuazione Art. 2 del D.M. 31/10/2007, n. 544)

Data from AA 2017/2018 are not available yet