Ph.D. Program
Current Academic Year (2022/2023)
Program Structure
Immigration [November – December]: Introductory courses on the basics, main topics and research trends in the area (30 hours).
Core [January – April]: Detailed courses on selected topics of interest, with a strong focus on research results, techniques, and challenges (14 hours).
Advanced [April – July]: Advanced courses on specific topics of interest for each pillar, with a strong focus on research results, techniques, and challenges (6-8 hours).
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.
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 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.
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
Engineering and quality management of human-centric and smart systems
Martina De Sanctis, Ludovico Iovino, Patrizio Pelliccione
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 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.
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 Programming and Data Processing in Python
Daniele Licari, 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.
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.
FM
Simulation Theory and Applications
Riccardo Pinciroli
Introduction to simulation. Monte Carlo simulation for stochastic systems (using NumPy). Discrete-event simulation for performance and reliability (using SimPy). Agent-based simulation for multi-agent systems (using Mesa). System dynamics simulation for complex systems (using Vensim and PySD).
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.
FM
Software Verification
Omar Inverso
General concepts. Practical application of formal methods to software systems. Overview of some common techniques for static analysis and program verification. Typical verification flow. General-purpose decision procedures. Concurrency. Domain-specific languages. Work in progress and open problems. Practical demo sessions.
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.
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.
Advanced Courses
Pillar
Title
Instructor
Syllabus
FM
Advanced Topics in Software Performance
Emilio Incerto and Mirco Tribastone
The course will present state-of-the art research concerning methods for the prediction and control of performance properties of software systems, highlighting contributions regarding the analysis of paradigms for large-scale systems such as micro services and serverless architectures.
FM
An Introduction to Session Types
Nobuko Yoshida and Lorenzo Gheri
Session types are a popular approach for the verification and specification of message-passing programs. This course introduces the syntax and semantics of a process calculus to formally reason about communicating programs, presents the binary session type system, which disciplines the communication of pairs of concurrent processes and guarantees type preservation and progress, and extends the binary session-type approach to systems of multiple (two or more) concurrent participants, by introducing multiparty session types. Examples and exercises are provided, and no prior knowledge of session types is required.
SE
Cloud Architectures and Patterns
Beniamino Di Martino
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 analyze 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 behavioral 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.
FM
Concurrency Theory
Daniele Gorla
The mutual exclusion problem; safety and liveness properties; a hierarchy of liveness properties (bounded bypass; starvation freedom; deadlock freedom. Atomic read/write registers; mutex for 2 processes (Peterson algorithm) and for n processes (generalized Peterson algorithm). From Deadlock freedom to Starvation freedom (and bounded bypass) using atomic r/w-registers. Lamport's Bakery algorithm. Mutex with specialized HW primitives (test&set; swap; compare&set; fetch&add). Mutex-free concurrency; liveness conditions (obstruction freedom, non-blocking, and wait freedom). Universal object, consensus object, and universality of consensus. Binary vs multivalued consensus. Consensus number (for atomic R/W registers, test&set, swap, fetch&add, compare&swap) and consensus hierarchy.
SE
Data as Commons
Maurizio Napolitano
The course aims to explore the concept of data as a common resource that can be shared, reused, and collaboratively managed for the benefit of all. It is designed for students in the fields of computer science, social sciences, and related areas, with the aim of creating cross-disciplinary contamination and uniting knowledge. The course will cover a range of topics, including open data, dataspace, civic hacking, and data visualization with the goal to delve into the importance of open data in promoting transparency and innovation, the impact of dataspace on data sharing and collaboration, and the role of civic hacking in promoting social change and citizen engagement. In addition to theoretical knowledge, the course includes a hands-on data visualization lab in the final session. This lab will enable participants to develop practical skills in creating value from data. By the end of the course, participants will have a deep understanding of the potential of data as a commons and the skills needed to create value from it.
ALG
Learning Theory
Shay Moran
Recent years have witnessed tremendous progress in the field of Machine Learning (ML). However, many of the recent breakthroughs demonstrate phenomena that lack explanations, and sometimes even contradict conventional wisdom. One main reason for this is because classical ML theory adopts a worst-case perspective which seems too pessimistic to explain practical ML: in reality data is rarely worst-case, and experiments indicate that often much less data is needed than predicted by traditional theory. In this series of talks we will discuss two variations of classical learning theory. These models are based on a distribution- and data-dependent perspective which complements the distribution-free worst-case perspective of classical theory, and is suitable for exploiting specific properties of a given learning task. A common theme of these models is their combinatorial nature. This can be seen as a continuation of the fruitful link between machine learning and combinatorics, which goes back to the discovery of the VC dimension more than 50 years ago.
ALG
Mechanism Design
Ioannis Caragiannis
This advanced course will cover the theory of mechanism design for single-parameter settings, with a focus on optimizing social welfare and revenue in auctions. Applications to sponsored search will also be discussed. Then, the design principles for designing simple but approximately optimal auctions will be explored.
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
Probabilistic Modeling and Formal Verification
Javier Camara
Basic probabilistic modeling using Discrete-Time Markov Chains (DTMCs) and the PRISM modeling language. Specification of system properties with Probabilistic Computation Tree Logic (PCTL). Interactive simulation and checking of system properties using the PRISM tool. Concurrency in PRISM and model checking of reward-based properties.
SE
Robot Architectures
Davide Brugali
Introduction to robotics - basic functionalities. Architectures for autonomous robots. Software engineering in robotics and research directions.
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
Special topics in Domain Specific Languages
Marjan Mernik
Domain-specific languages (DSLs) assist a software developer (or end-user) in writing a program using idioms similar to the abstractions found in a specific problem domain. Indeed, the enhanced software productivity and reliability benefits that have been reported from DSL usage are hard to ignore, and DSLs are flourishing. However, tool support for DSLs is lacking when compared to the capabilities provided for standard General-Purpose Languages (GPLs). For example, support for unit testing of a DSL program, as well as DSL debuggers, is rare. A Systematic Mapping Study (SMS) has been performed to better understand the DSL research field and to identify research trends and any possible open issues. This course introduces students to appropriate methodologies and tools needed to support the development of DSLs. Open problems in DSLs are discussed as well.
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.