Ph.D. Program
Academic Year (2021/2022)
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
Introduction to Software Engineering
Patrizio Pelliccione, Ludovico Iovino, Martina De Sanctis
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.
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 sponsored web search: Matching Markets; VCG mechanism; GSP mechanism.
ALG
Approximation Algorithm
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
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.
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; Chernoff bounds; martingales and Azuma's inequality; random graphs; smoothed analysis.
FM
Formal Methods at Work
Catia Trubiani, Riccardo Pinciroli
Modelling and Analysis of Probabilistic Systems: Stochastic Process Algebras, Timed Automata, Markov Decision Processes, Queueing Networks. Uncertainty and Learning of quantitative properties. Guidelines on building simulation environments for Cyber-Physical Systems.
FM
Model Checking
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.
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
Theory and Applications of Model-Driven Engineering
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.
SE
Software Quality
Martina De Sanctis, Ludovico Iovino, 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 applications to development and modeling.
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.
*
Ethics in Computer Science
Pierluigi Crescenzi
Ethical algorithm design. Basics of machine learning. Algorithmic privacy. Algorithmic fairness. Explainability of supervised machine learning. Algorithmic robustness.
*
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.
Advanced Courses
Pillar
Title
Instructor
Syllabus
ALG
Multiplicative Weights Update
Ruben Becker
We introduce Multiplicative Weights Update as a meta-algorithm based on the survey by Arora, Hazan, and Kale from '12. As a motivation, we start with the Weighted majority algorithm. We then introduce the Multiplicative Weights Update routine as a general framework and then present several applications of this framework. (1) We show that the framework can be used to approximately solve zero-sum games, this goes back to a result by Freund and Schapire from '99. (2) We outline how the framework yields approximate solutions to packing and covering LPs going back to a result by Plotkin, Shmoys, and Tardos from '95. (3) We discuss the connection of the presented framework to Randomized rounding LP relaxations, a result by Young from '95. (4) We briefly discuss the relation to boosting in learning theory.
ALG
Secretary Problems and Prophet Inequalities
Bojana Kodric
Generally speaking, Secretary Problems and Prophet Inequalities are two classes of optimal stopping problems, both of which combine online decision making and stochasticity, and both of which have received a lot of attention in the last two decades.
Consider the following simple problem: you are presented with a sequence of $n$ numbers, one by one, and your objective is to pick the largest one in the sequence. However, you must make your decision in an online fashion: every time a new number is revealed, you have to make an immediate and irrevocable decision of picking it (and thus the procedure ends) or refusing it (you are allowed to see the next number).
Without any limitations on the adversary that is feeding you the input, there is no strategy that guarantees anything better than a 0-approximation. The situation changes when (1) the input is allowed to be adversarial but it is revealed to the algorithm in a random order, or (2) the input is allowed to arrive in an adversarial order but is drawn from a priori known distributions.
Furthermore, the simple problem described above can be generalized to more involved settings, where we need to pick more than one element subject to some constraints.
In this course, we will survey some results, proofs, and techniques, mostly for generalizations of the simple problem described above, under the assumptions (1) and (2). Such generalizations, together with assumptions (1) and (2), are termed Secretary Problems and Prophet Inequalities, respectively.
ALG
Theory of Distributed Computing
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.
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
Abstract State Machines for Verification and Validation of Safety Critical Systems
Angelo Gargantini, Elvinia Riccobene
The ASM (Abstract State Machines) are a method for the rigorous design and development of software systems. They are an extension of Finite State Machines and allow the modeling of a system in terms of computation automata. To facilitate the use of ASMs and facilitate their use in software engineering processes, ASMETA (Asm METAmodeling) - https://asmeta.github.io/ has been developed, an integrated environment of tools that assist the user during the various specific and analysis activities (validation and verification) of a model. The course is aimed at presenting ASMETA and the features offered. Through simple case studies the development process of a specific ASM in ASMETA is presented starting from the requirements, the different simulation techniques (random and scenario-driven) and animation of models are shown, and the verification of simple temporal properties. We will show also how to obtain C++ code that can be executed for instance on an Arduino.
FM
Hybrid System Falsification: Fundamentals and Advanced Topics
Paolo Arcaini, Zhenya Zhang, and Ichiro Hasuo
Topics:
• Introduction to hybrid system falsification: models of hybrid systems, specification languages (Signal Temporal Logic), and stochastic optimization for falsification;
• Advanced falsification techniques: strategies for efficient state space exploration and design of functions for effective falsification guidance, using Monte Carlo Tree Search and Multi-Armed Bandits;
• Handling of constraints in falsification: penalty-based approaches and search-space transformation approaches;
• Confidence measures for falsification.
SE
Ethics in Software Engineering
Paola Inverardi
SE
Testing, Debugging and Program Repairing
Leonardo Mariani
Many testing and program analysis techniques require sound and up-to-date software specifications to be effectively applied. Unfortunately, specifications are seldom available, and when they are available they are often outdated and cannot be used to test or analyse software programs. This advanced course will present testing, debugging and repairing solutions, with specific emphasis on the ones that can exploit automatically mined specifications. The first part of the course will present several specification mining techniques that can be used to extract different kinds of behavioural models. The second part of the course will present testing, debugging and repairing techniques with some more emphasis on the ones that exploit mined specifications.
SE
Software Engineering for AI
Patrizio Pelliccione
ML and AI are increasingly dominating the high-tech industry. Organizations and technology companies are leveraging their big data to create new products or improve their processes to reach the next level in their market. However, ML and AI are not a silver bullet and Software 2.0 is not the end of software developers or software engineering. In this course we will discuss on how ML and AI can be probitably used in software engineering and on how, on the other side, software engineering can help ML and AI to become the key technology for (autonomous) systems of the near future.
*
Reinforcement Learning: Algorithms and Applications
Giorgio Manganini
Reinforcement Learning (RL) is a Machine Learning paradigm that addresses sequential decision-making problems in which intelligent agents interact with an environment to optimize a utility signal. In the last decade, RL has become a pervasive approach to deal with complex control tasks and has achieved significant results in several fields, including robotics manipulation, finance, self-driving cars, industrial plant automation, and news recommendation. This course aims to provide a self-contained overview of: i) the fundamental theoretical aspects of RL; ii) the essential RL algorithms (classical and modern ones); iii) some applications to real-world scenarios.
*
Quantum Computation and Information: a Primer
Andrea Rocchetto
*
Elements of Computational Modeling in Julia
Emanuele Natale
Science understands reality by designing models which allow to explain and predict observations of the real world. Simulation is the computation of the implications of a scientific model. Computers have been invented in order to run simulations fast and reliably, thus allowing for the investigation of complex models. In this course we'll confront the fundamental question "What is a good simulation?" and we'll progress toward an answer by introducing key theoretical ideas and by learning how to perform simulations using the Julia programming language.
*
Engineering of Ontologies with Description Logics
Nicolas Troquard
Description Logics are formal languages for knowledge representations used to define ontologies. The Web Ontology Language (OWL) and its profiles are based on Description Logics. We will present the syntax and the semantics of the main Description Logics, and their computational complexity of reasoning. We will also present selected topics that occupy researchers and practitioners in the field, e.g.: ontology-based data access, concept learning, provenance, etc. We may use Protégé for a hands-on session.
Interdisciplinary Courses
Title
Instructor