Ph.D. Program

Current Academic Year (2023/2024)

Program Structure

Calendar of Lectures and Seminars

Immigration Courses

Pillar

Title

Instructor

Syllabus

ALG

Design and Analysis of Algorithms

Alkida Balliu, Michele Flammini, Dennis Olivetti

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

Omar Inverso, Catia Trubiani, Emilio Tuosto

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

Introduction to Software Engineering

Martina De Sanctis, Ludovico Iovino, Patrizio Pelliccione 

Basic concepts of software development paradigms, application domains, the software life cycle, design of software systems and modeling, software architectures. 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.

*

Scientific Communication

Chiara Sabelli

How to do scientific communication

Core Courses

Pillar

Title

Instructor

Syllabus

ALG

Algorithmic Game Theory

Michele Flammini

Basic notions of equilibrium: dominant versus Nash; computational issues of equilibria; performance of equilibria (price of stability and anarchy). Congestion games: congestion games, cost sharing games, load balancing; price of anarchy and stability; PLS-completeness; speed of convergence. Mechanism design and strategyproofness in coalition games. Learning in coalition games.

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.

SE

Autonomous and Self-Adaptive Systems

Martina De Sanctis, Patrizio Pelliccione

The course will discuss the motivation for self-adaptation, the basic principles and system properties of autonomous and self-adaptive systems and how to engineer these kinds of systems. The course will also present concrete systems in the domain of e-Health, smart mobility, robotics, and recent advances in the literature.

SE

Continuous Evolution of Software and Artifacts


Amleto Di Salle Ludovico Iovino, Patrizio Pelliccione

ALG

Distributed Graph Algorithms

Alkida Balliu, Dennis Olivetti

This course is about theory of distributed computing. We will learn about some of the most studied models of distributed computing, with focus on synchronous and fault-free models. We start from the basics: we formally define the distributed setting and what is a distributed algorithm, illustrating the formal definition with some simple examples. Then we slowly build up on this, focusing at the beginning on simple networks such as rings, and learning how to solve, in this setting, simple fundamental tasks such as coloring, maximal independent set, and maximal matching. Next, we will discuss the topic of decidability: given a problem, can we automatically decide what is its asymptotic distributed complexity? We will see that for a large class of problems, on ring networks, this is actually possible. After that, we switch to more general network topologies, and we will see how to solve some tasks in this setting. Finally, we will see some impossibility results. In particular, we will see how to prove lower bounds for the distributed complexity of some classical problems. A basic knowledge about graph theory and big-O notation is assumed.

SE

Engineering of Human-Centric and Smart Systems


Martina De Sanctis, Paola Inverardi, Patrizio Pelliccione, Gian Luca Scoccia, Nicolas Troquard

Modern systems are becoming more and more human-centric and smart. In this course we will explore approaches, challenges, and open research directions in the engineering of human-centric and smart systems. We will give special attention to quality aspects, but also to values that are important to take into account when humans are involved not only as users but also as entities in the decision-making loop.

*

Ethics in Computer Science


Pierluigi Crescenzi

Ethical algorithm design. Basics of machine learning. Algorithmic privacy. Algorithmic fairness. Explainability of supervised machine learning. Algorithmic robustness.

FM

Formal Methods at Work


Catia Trubiani

Modelling, analysis, and testing of probabilistic systems: Stochastic Process Algebras, Markov Decision Processes, Timed Automata, Queueing Networks. Software Performance: uncertainty and learning of quantitative software properties.

ALG

Graph Mining


Pierluigi Crescenzi

Graph mining: interpreting the past, understanding the present, imagining the future. A small world: computing and analysing the degrees of separation. A very small world: computing the diameter. Centrality measures: computing betweenness and closeness centrality. Giant components and bow-tie graphs: Kosaraju-Sharir algorithm and its applications. Link prediction: similarity-based techniques and recommendation systems. Temporal graphs.

FM

Introduction to Blockchain and Smart Contracts


Maurizio Murgia

Preliminary notions of cryptography and distributed systems. Consensus in distributed systems. Bitcoin blockchain and contracts. Ethereum blockchain and contracts. Vulnerabilities of smart contracts. Formal methods for smart contracts.

*

Introduction to Python Programming and Machine Learning


Andrea Vandin

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.

*

Knowledge Representation and Ontology Engineering


Nicolas Troquard

FM

Model Checking 

Clemens Grabmayer, 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.

FM

Satisfiability Problems and Applications

Franco Raimondi

This course introduces the notion of Boolean Satisfiability (SAT) and Satisfiability Modulo Theories (SMT). The course will provide an overview of decision procedures and it will be mainly concerned with the implementation and the application of SAT and SMT to concrete problems. The course will cover the issue of encoding problems into appropriate SAT and SMT instances, and it will present examples from various research and industry domains, exploring the solutions currently available.

SE

Software Testing

Antonella Bertolino

General concepts and techniques of software testing. Main concepts of dependability and reliability testing. Most interesting research challenges in software testing.

SE

Theory and Applications of Model-Driven Engineering

Francesco Basciani, Amleto Di Salle, Ludovico Iovino

This course will explore model-driven Engineering methodologies applied to practical case studies.The course will cover the basic knowledge of modeling, metamodeling, transformations, and code generation. 

Advanced Courses

Pillar

Title

Instructor

Syllabus

FM

Advanced Technologies for the Analysis of Cyber Physical Systems

Shaukat Ali

Uncertainty-wise CPS Modeling, Evolution, and Testing (Uncertainty modeling, Uncertainty and model evolution, Uncertainty-wise testing and optimization). Digital Twins based CPS Analyses (Introduction to digital twins, Advanced analyses with digital twins, Digital twin evolution). Quantum Computing for CPS Analyses (A brief introduction to quantum computing, Example applications). 

ALG

Algorithmic Principles in Neurosciences

Emanuele Natale

This course aims at rekindling the historical connection between neuroscience and computer science, exploring some of the algorithmic principles that underlie both brains and machines. Pioneering figures like von Neumann and Turing recognized this deep link, and we'll delve into the computational core of fundamental questions in neuroscience. We'll examine how neurons process information, leverage intricate connections, and potentially inspire new computational frameworks. By exploring how these biological algorithms underlie perception, action, and even language, we'll bridge the gap between brain and computation.

ALG

Casual Limits of Distributed Quantum Computation

Francesco D'Amore

This course will investigate the following research question: can quantum computation and communication speed up distributed networks? This question is directly related to the limits of distributed computation. The classical limits of distributed computation are well-known today, most of which are captured by the LOCAL model of computing. We will explore its quantum (and super-quantum) counterparts and present techniques to bound possible quantum advantage.

ALG

Experimental Algorithmics and Algorithm Engineering

Gianlorenzo D'Angelo

Experimental design; Measures in algorithmic experiments; Algorithm and code tuning; Building test environments; Analysis of experimental data.

ALG

Fair Division: Elicitation, Algorithms and Justice Criteria

Yair Zick

This course aims at rekindling the historical connection between neuroscience and computer science, exploring some of the algorithmic principles that underlie both brains and machines. Pioneering figures like von Neumann and Turing recognized this deep link, and we'll delve into the computational core of fundamental questions in neuroscience. We'll examine how neurons process information, leverage intricate connections, and potentially inspire new computational frameworks. By exploring how these biological algorithms underlie perception, action, and even language, we'll bridge the gap between brain and computation.

SE

Mining Software Repository

Gian Luca Scoccia

FM

Modelling and Validation of Concurrent Systems

Antonio Ravara

Concurrent and distributed software is nowadays pervasive to most computing devices. However, it is particularly difficult to design and validate. Concurrency bugs appear frequently and have a substantial impact, as not only they may affect many people, but also may cause a severe financial damage. There is thus a pressing need of using rigorous approaches and tools to specify and verify such systems. Industrial actors like Amazon, Facebook, Google, IBM, Intel, Microsoft, or NASA, just to name a few, are using tools to formally guarantee that (parts of) their software is bug-free.

This course covers basic principles, techniques, and some tools to help on the challenging task of developing concurrent software systems. This involves understanding languages to specify systems and their properties. There are various kind of key properties of concurrent systems; we will focus on basic safety and liveness properties, which are enough to express functional requirements of concurrent and distributed algorithms.

Note - all lectures have a companion list of suggested exercises (and I am available in office hours to help with them and provide feedback about your solutions).


Lecture 1: concurrent reactive systems

- requirements to model concurrent reactive systems

- the calculus of communicating systems (syntax and operational semantics)

- motivating and illustrative examples


Lecture 2: equivalences for CCS

- requirements for an equivalence notion

- basics on co-induction

- observational behavioural equivalence (axiomatically and co-inductively)


Lecture 3: the pi-calculus

- why do we need a dynamic process topology?

- the pi-calculus

- early and late operational semantics

- early and late bisimulations

- motivating and illustrative examples


Lecture 4: (mobile) modal logics

- Hennessy-Milner Logic

- the mu-calculus

- tools for reasoning about process behaviour


Lecture 5 (optional): research topics

- static analysis

- expressiveness

- protocol soundness

FM

Normative requirements for autonomous systems

Sinem Getir Yaman

Normative requirements elicitation and specification, Formal semantics of normative rules, Conflict detection in normative rulesets, Redundancy detection in normative rulesets, Normative requirements verification of autonomous systems.

FM
SE

Ontologies and Robotic Applications

Stefano Borgo

Normative requirements elicitation and specification, Formal semantics of normative rules, Conflict detection in normative rulesets, Redundancy detection in normative rulesets, Normative requirements verification of autonomous systems.

ALG
FM

Parameterized Complexity

Clemens Grabmayer

Parameterized complexity theory aims at a refined analysis of computational problems. An instance of a problem is not only measured by its size, but also by a natural-number parameter that classifies its inner structure. Many intractable problems are `fixed-parameter tractable', which can mean that they are tractable in practice for small-parameter instances. The course treats Algorithmic aspects (A) and Formal-Methods viewpoints (FM) of parameterized complexity. In (A) we focus on definitions/basic properties, kernelization, dynamic programming with graph-width parameters, and in (FM) on Courcelle's Theorem for obtaining fpt-results by expressing problems as logical formulas, and the W/A-hierarchies of complexity classes based on model checking problems.

FM

Protocol Specifications for Concurrent and Distributed Systems

Nobuko Yoshida

FM

Quantum Computing Demystified

Max Tschaikowski

High-level Intro; Basics of Reversible Computing; Basics of Quantum Computing; Deutsch-Jozsa Algorithm; Grover's Algorithm; Quantum Complexity.

FM

Static Analysis for Software Security

Omar Inverso

Motivation and regulations for (cyber)security; Preliminary concepts; Coding standards and vulnerability databases; Examples.

SE

Software Engineering with and for AI

Fabio Palomba

The course aims at providing students with a gentle introduction to the intersection of software engineering (SE) principles and artificial intelligence (AI) technologies. In the first part, the course will target SE with AI, introducing the key elements to design an AI-based technique for SE, other than the multiple ways AI can be used to assist software engineers in practice. In the second part, the course will target SE for AI, providing insights on how software engineering principles, standards, and instruments might help addressing key non-functional properties of AI-enabled systems, e.g., fairness, sustainability, and technical debt. The course will finally engage students in discussions on exemplary cases coming from the scientific literature. 

SE

Software Engineering for Cognitive Robots and Systems

Nico Hochgeschwender

In this research-oriented course, we will study cognitive robots capable of physically interacting with their environment, collaborating with humans and other agents, and autonomously performing a variety of tasks in complicated environments. The general theme of the course is the overall objective of making cognitive robots act in a transparent manner that makes sense to humans and other agents, and can function reliably over a long period of time. To this end, we will introduce and exemplify the desirable cognitive capabilities required to realize cognitive robots, such as the means for representing and reasoning about scenes in virtual and real environments. In the main part of the course, we will study novel methods, concepts, and tools to support the automated engineering of robotic agents, covering their complete lifecycles in virtual and real environments. We will present tools and methods to enable humans to specify, construct, validate, and evaluate these systems as the robots themselves to autonomously adapt their software to the various and changing runtime requirements induced by the robot’s task or environment.

ALG

Temporal Graphs: a Primer

Andrea Marino
Ana Silva

A temporal graph is a graph modeling the dynamic nature of its links and of its nodes, meaning that it exists through (a discrete-labeled) time and, at each timestamp, only a subgraph of the base graph is active. Despite being around for more than three decades, only recently this structure has received more attention from the community, and in particular from the theoretical community. Such interest can be felt through the many recent papers on the subject, as well as through the inauguration of two specialized events (a satellite ICALP workshop and the conference SAND). With the main objective of stimulating the research on the field, we propose a course where we will learn about these structures, with particular interest on recent theoretical results about connectivity-related problems.

SE

Testing, Debugging and Program Repairing

Leonardo Mariani

Modern software systems are complex, heterogeneous. and open systems that require sophisticated approaches for the generation of test cases and the analysis of failures. This advanced course will cover some key cases and domains, including testing software in the field within its operational environment, testing and analysing failures of Cyber-physical Systems (CPS), testing Web applications, and detecting failures with program oracles. The course shall include a lab on Web testing.

SE

UX/UI: Fundamentals for Interface Design

Luciana Rebelo

This course aims to introduce the fundamentals for creating adequate experience for the user, by means of basic design principles, ways to generate ideas, and how to develop proper interfaces. This introductory course is composed of theoretical classes with practical examples of application, such as usability and rapid prototyping, wire-frames, and principles of design.

Previous Years