Ph.D. Program

Academic Year (2020/2021)

Immigration Courses

Pillar

Title

Instructor

Syllabus

ALG

Design and Analysis of Algorithms

Michele Flammini, Ruben Becker, Bojana Kodric

Basic notions of algorithms and complexity; Divide-and-Conquer; Dynamic Programming; Basic data structures: heaps, hash tables; Greedy; Local Search; Network Flow; All-pairs Shortest Paths; NP-complete problems and intractability; PSPACE


FM

Introduction to Formal Methods

Emilio Tuosto, Omar Inverso, Catia Trubiani

Basics on formal models of (concurrent) computations, operational semantics and (labelled) transition systems, regular expressions, basic process algebras. Preliminary concepts of software verification, typical verification flow, common program analysis techniques, decision procedures. Basic concepts of software modelling and analysis with stochastic processes, discrete-time markov processes, and petri nets.

SE

Software, Systems and Services

Ludovico Iovino, Martina De Sanctis

Basic concepts of software development paradigms, application domains, the software life cycle, design of software systems and modeling, software archtiectures. The course also provide some basic knowledge of the tools used to generate software programs from models.

*

How to - Introductory Lectures

Catia Trubiani

How to write a paper. How to give a scientific talk. How to referee a scientific paper.

Core Courses

Pillar

Title

Instructor

Syllabus

SE

Software Testing

Antonella Bertolino

General concepts and techniques of software testing. Main approaches for dependability and security validation. Most interesting research challenges in software testing.

SE

Program Analysis

Paola Inverardi

This course analyses different kind of analysis for software: static, dynamic and hybrid. Introduce the theoretical principles of static analysis and present some of the approaches and tools used in software practice

SE

Software Quality


Ludovico Iovino, Lorenzo Bettini and Patrizio Pelliccione

Software Quality is defined as a field of study and practice that describes the desirable attributes of software products. In this course we explore some of the methodologies to keep track, monitor and improve software quality with specific application to development and modeling.

SE

Introduction to Programming and Data Processing in Python


Andrea Vandin and Daniele Licari

This course introduces students to data processing in Python. It first builds the necessary toolset by introducing popular Python libraries for data manipulation/visualization (NumPy, Pandas), applied to simple applications. The toolset is then applied to a more complex case study on the classification of benign and malignant breast cancer. The course concludes presenting KNIME, a popular python-integrated workflow-based language for data analysis.

FM

Formal Behavioural Specifications


Emilio Tuosto

Basics on process algebras, Basics of behavioural types: the dyadic case, Correctness-by-construction, The Multi-party case, Choreographic approaches, Practical repercussions


FM

Model Checking and Software Verification


Omar Inverso, Emilio Tuosto

Modelling of reactive systems, review of the model checking approach, temporal logics (LTL, CTL, and CTL*), safety and liveness properties of reactive systems, fairness conditions.

Context-bounded analysis and bounded model checking of concurrent programs. Decision procedures and propositional satisfiability.

FM

Formal Methods at Work


Catia Trubiani, Riccardo Pinciroli

Modelling, Analysis, and Testing of Probabilistic Systems: Stochastic Process Algebras, Markov Decision Processes, Timed Automata, Queueing Networks

FM

Modelling and Verification of Reactive Systems


Emilio Tuosto

Principles of Parallel and Concurrent Programming, Introduction to Concurrency, Paradigms for Parallel Programming, Interference and Atomicity, Mutual Exclusion, Semaphores, Monitors, Elements of Distributed Programming, Concurrent Programming Languages

ALG

Approximation Algorithms


Gianlorenzo D'Angelo

Introduction to linear programming; the set cover problem; greedy algorithms and local search; rounding data and dynamic programming; deterministic rounding of linear programs; random sampling and randomized rounding of linear programs; the primal-dual method; techniques to prove the hardness of approximation

ALG

Algorithmic Game Theory


Michele Flammini

Algorithmic Game Theory (Equilibria: dominant versus Nash equilibria; Computational issues of equilibria); Congestion Games; Mechanism design; Computational social choice

ALG

Algorithm Engineering


Gianlorenzo D'Angelo and Pierluigi Crescenzi

Experimental design; measures in algorithmic experiments; algorithm and code tuning; test environment; data analysis

ALG

Randomized Methods in Computer Science


Ruben Becker, Bojana Kodric

Basics in probability theory; coupon collector and contention resolution; Yao’s principle and the secretary problem; the probabilistic method; randomized min-cut and quicksort; Chernoff bounds; random graphs; smoothed analysis

ALG

Graph Mining


Pierluigi Crescenzi

Graph topological measures. Conditional lower bounds. Heuristics for huge real-world graphs. Probabilistic analysis of some heuristics.

Advanced Courses

Title

Instructor

Building Domain Specific Languages

Dimitris Kolovos (University of York)

Graph Transformations - Theory and Practice

Adrian Rutle (Western University of Applied Science)

Probabilistic Model Checking

Joost-Pieter Katoen (RWTH Aachen University, Germany)

Abstract Interpretation and Applications Beyond the Beaten Track

Caterina Urban (INRIA, France)

Selected topics in Graph Theory and Algorithms

Vahan Mkrtchyan

Strategic Aspects of Distributed Ledger Technologies

Paolo Serafino

A Short Introduction to Parameterized Complexity

Alessandro Aloisio, Clemens Grabmayer

Selected Topics in Approximation and Online Algorithms

Cosimo Vinci

Algorithmic Aspects of Neuroscience

Emanuele Natale

An introduction to self-adaptive systems

Martina De Sanctis

Engineering Cyber Physical Systems

Laura Nenzi (University of Trieste)

Software Engineering and Artificial Intelligence (Details)

Patrizio Pelliccione

Interdisciplinary Courses

Basic Elements of Cybersecurity (10 Hours)


Rocco De Nicola (Scuola IMT Lucca)

Basic knowledge of the risks run when surfing the web and of the main tools for defending assets and privacy.

Abstract:

This is an introductory course that would be beneficial for any student and does not assume any prior technical knowledge. We will discuss cybersecurity in general and present techniques and tools for navigating securely and for defending assets and privacy.

Systematic Literature Review (4 Hours)

Antonia Bertolino (ISTI-CNR, Pisa)

How to do systematic literature review.

Previous Years