An introduction to Deep Learning

Lecturer: Antonio Gullì (Google)

Period: 15-19 January 2018,  Sala Seminari Est

The goal of this course is to provide an handson introduction to Deep Learning. The traditional concepts used in neural networks are introduced, together with modern convolutional networks, generative adversarial networks, recurrent networks, and autoencoders. In addition, we will look at Reinforcement Learning and its application  to AI Game Playing, a popular direction of research and application of neural networks. All the examples will be coded in Keras a python high-level framework running on the top of Google's Tensorflow, Microsoft's CNTK, Amazon's MLXnet, and University of Montreal's theano.


  1. Monday: January 15, 9-11 and 14-16
  2. Tuesday: January 16, 9-11
  3. Wednesday: January 17, 9-11 and 14-16
  4. Thursday: January 18, 9-11
  5. Friday: January 19, 9-11 and 14-16


Graph Mining Algorithms

Lecturer: Andrea Marino (UniPI)

Period: 6-9 and 13-16 February 2018, h. 10-12 Sala Seminari Ovest (Thursday 8/02 Sala Seminari Est)

In this course we will focus on the computation of several graph topological measures, for which polynomial-time algorithms are available and in "practice" are not useful, due to the huge size of the networks to be analysed. We will consider efficient algorithms for the following problems: computing diameter, distance distribution, average distance, and centrality measures, counting triangles and probabilistic counting in general, clustering and graph pattern mining.

Slides of the couse


Shape Analysis and Geometric Processing

Lecturer: Paolo Cignoni, Fabio Ganovelli, Daniela Giorgi, Maria Antonietta Pascali (ISTI - CNR)

Period: March-April 2018

The course deals with 3D shape analysis and geometric processing, which are key topics in Computer Graphics, Vision and Digital Fabrication. The course introduces well-established and recent geometric concepts and tools (curvature and geodesics, spectral methods, computational topology, topological persistence), emphasizing the discrete and computational viewpoint. In the last decades these topics have attracted the attention of many researchers thanks to the fast-paced growth of the research in 3D, pushed by the technological advances in gaming, autonomous navigation, biomedical, digital cultural heritage, 3D printing, etc. The aim of the course is to let the math student appreciate how geometry is successfully used in applied sciences; and to provide the computer science student the mathematical basis needed to efficiently tackle open issues in such a lively research field.


Skills Boosting for New (Research) Horizons

Lecturer: Paolo Ferragina (UniPI), Michele Padrone (UniPI), Davide Morelli (BioBeats), Flavio Tosi (Business Exploration),Camilla Van den Boom (Eindhoven University), Nicola Redi (Venture Factory), Ray Garcia (Buyont Capital, NY)

Period: 9 and 10 April 2018

This course aims to help PhDs in Computer Science to scale and enrich their technical and scientific abilities with experiences, (soft) skills and networking useful for your future either as a researcher, or as an entrepreneur, or as a chief software engineer, or as the CTO of a successful company ! It is indeed very well known that the best talents are found at the intersection of community/networking, skills, right mindset (good attitude and self-motivated) and technical competency. The course is intended to have PhD students to ACT on their own and be able to evaluate their scientific achievements from other perspectives, find new avenues for grant funds for research and developing their ideas.

Read more


Formal Methods for Program Verification

Lecturer: Massimo Bartoletti (UniCa), Pierpaolo Degano (UniPI), Dino Di Stefano (Facebook), Gianluigi Ferrari (UniPI), Letterio Galletta (UniPi)

Period: 7-11 and 21-25 May 2018 Sala Seminari Ovest

We will focus on a repertoire of formal techniques that prevent applications and systems to misbehave.
This issue is particularly relevant because now-a-days software is everywhere. Thus it has to be designed to properly work in open, highly mutable environments of different nature, including cyber-physical ones.Software must then come with guarantees on its behaviour, robustness, reliablity, security, scalability, and efficiency. Precise guarantees can only be offered by a formal proof of software correctness, carried on a sound abstract model of the system in hand. We will also present and possibly experiment with mechanical tools, used in industries and academia, which support program verification.


  1. 7 May 9-12 -- Pierpaolo Degano: Static analysis: basics, examples (Data flow + transformations)
  2. 8 May 9-12 -- Lillo Galletta: Type systems, Type&effect systems, resolution algorithms (WList)
  3. 10, 11 May 9-12 -- Dino Di Stefano: INFER and its foundations
  4. 21 May 15-18 -- Gianluigi Ferrari: Run-time verification
  5. 24, 25 May 9-12 -- Massimo Bartoletti: Smart contracts


Distributed Systems Security

Lecturer: Roberto di Pietro (College of Science and Engineering, Dhoa-Quatar)

Period: 11-15 June 2018, h. 9.00 - 12.30 Sala Seminari Ovest

This course focuses on fundamental and advanced concepts in Distributed Systems, addressing their foundations, current technologies, and security aspects. Topics include, but are not limited to, distributed hash tables (peer-to-peer systems), failure detectors, synchronization, election, distributed agreement, consensus, gossiping, replication, key-value stores, NoSQL, blockchain technology. These topics are discussed in the context of real-life and deployed systems such as clouds and datacenters, databases, peer to peer systems, clusters, cryptocurrencies.


Modeling methods

Lecturer: Egon Boerger (UniPI)

Period: 18, 19, 22, 25, 27, 29 June 2018, h. 10.00 - 12.00 Sala Seminari Ovest

The course explains two major methods for design and analysis of  computational systems, known as ASM (Abstract State Machines) and Event-B method. The focus will be on the refinement method which permits to link abstract models (specifications) to code in a provably correct way.


Distributed Algoritms and Complex Network Analysis

Lecturer: Pierre Fraigniaud (CNRS, France) and Pierluigi Crescenzi (UniFI)

Period: dates to be decided

Part I (10 hours). Distributed computing is a field of computer science that studies distributed systems, i.e., systems in which a collection of autonomous computing entities coordinate their actions via some communication medium. The objective of the first part of this course is to introduce the main techniques of algorithm design and analysis for distributed computing, enabling the computing entities aiming at collectively solve a common task. This part of the course will focus on the main computing models, capturing different aspects of distributed computing, including network computing, asynchrony, fault-tolerance, etc. For each model, the course will present the main techniques for (deterministic and probabilistic) algorithm design, and for deriving lower bounds and impossibility results.

Part II (10 hours). Modelling and analysing complex networks requires understanding both the mathematics of networks and the computational tools for identifying and explaining the patterns they contain. In the second part of the course, we will examine algorithmic techniques for analysing and modelling the structure and dynamics of complex networks. The focus will be on the model interpretation and the understanding of the processes that generate real data. Applications will be mainly drawn from computational social science.