Details Year 2

SLR 201 Advanced Programming and Project Management (Java-based)(24h, 2,5 ECTS) (Ada Diaconescu)


This course offers more advanced notions of Java programming, compared to what was seen in the 1st year courses (INF103). Mastering these notions is essential for comprehending the main concepts of distributed systems (SLR203). The course also provides more detailed notions of project management, including the management of software versions, of library interdependencies, and of agile development processes.


This course includes the following subjects:

- Java Threads, synchronisation, object serialisation, Input/Output interfaces and Sockets;

- version management via advanced git (e.g. branches, conflict management, SmartGit platform);

- automated software compilation, packaging and execution via the Apache Ant (or Maven) tool;

- introduction to the agile method (e.g. Scrum) for software project development.


A good understanding of Object Oriented Programming (OOP) and basic experience with Java programming

SLR 202 Software System Modelling and Design (Object-Oriented) (24h, 2,5 ECTS) (Ada Diaconescu, Vadim Malvone)


This course offers an introduction to the software development process, focusing on software system modelling and design tools. The course mainly discusses object-oriented approaches, but may also include component- and service-oriented architectures. Notably, the course includes a set of design patterns, some of most commonly used (GoF), while emphasising their usage in the design of large-scale distributed systems. The UML standard notation, one of the most commonly employed in the industry, will be used to illustrate and apply the theoretical modelling concepts presented.


This course will address the following topics:

  • Requirements specification via scenarios and Use Case diagrams;

  • Object-Oriented architectural modelling via Class diagrams, refined by common design patterns (GoF);

  • Illustrative examples of the use of design patterns for developing large-scale distributed systems (e.g. application servers);

  • Interaction modelling viaSequence diagrams;

  • Behavioural modelling via state-chart diagrams.


A good understanding of Object Oriented Programming (OOP)

SLR 203 Introduction to technologies of distributed software development (24h, 2,5 ECTS) (Ada Diaconescu)


This course introduces essential notions for comprehending distributed systems and their development based on middleware (using Java as an example). It offers several concrete middleware examples, including: based on a remote method invocation model; on a remote passing model; and on an "actor" model. A comparison amongst presented middleware examples will enable a better understanding of their applicability to different application domains.


This course includes the following topics:

  • Basic notions of distributed systems and middleware

  • RMI as a middleware example for remote method invocation;

  • JMS (and/or MQTT) as middleware example for remote message passing;

  • Akka as middleware example for actor models;

  • Comparison of presented middleware examples, highlighting their applicability to different domains


  • SLR201

  • Good knowledge and experience with Object-Oriented programming (preferably Java)

SLR 204 Basics of verification of distributed systems (24h, 2,5 ECTS) (Vadim Malvone)


The aim of this module is to introduce key concepts related to the formal verification of concurrent and distributed software.

Syllabus – This module presents the basis of 3 approaches for verification: Process Algebras, Temporal Logic and Petri Nets. The following aspects are addressed:

- Introduction and role of verification in the development process, behavioral modeling, property modeling, formal semantics.

  • Verification through state exploration, proof based verification.

  • Remarkable properties: non-determinism, deadlock, livelock, fairness, starvation, etc.

  • Process algebras approach for behavioral modeling. Labelled Transition Systems.

  • Equivalences between behaviors: trace equivalent, test equivalent, bisimilar behaviors.

  • Temporal logics (LTL et CTL) for expressing verifiable properties. Kripke structure for modeling behaviors. Model Checking verification. Buchi Automata, Fix point.

  • Petri Nets, modeling of concurrency, synchronization, conflict.

  • Verification of behavioral properties, invariants.

No prerequisites

SLR 206 Distributed algorithms (48h, 5 ECTS) (Petr Kuznetsov)


Students who complete this module will learn how to design distributed algorithms, reason about their correctness, and derive matching complexity bounds.


The primary focus of the module is on understanding of the foundations of distributed computing. The module will discuss basics of synchronization, fault-tolerant shared-memory computations, consensus and transactional memory.


basic knowledge of mathematics and classical

algorithms, including complexity analysis

SLR 207 Technologies of large-scale parallel computing (24h, 2,5 ECTS) (Rémi Sharrock)


This Learning Module presents distributed computing and large scale technologies. An illustration will be given by implementing a real large scale distributed system.


  • Knowing large scale concepts, parallelization, virtualization, elasticity, overlay networks, autonomic computing and their applications for cloud computing.

  • Manipulating cloud services with a particular provider (for example Amazon)

  • Understanding MapReduce concepts

  • Implementing MapReduce with a local simulation and an Amazon cloud deployment


  • SLR201

  • Be capable of implementing distributed applications in Java.

SLR 210 Blockchain: algorithmic basics (24h, 2,5 ECTS) , (Petr Kuznetsov, Matthieu Rambaud)


Understanding of the algorithmic foundations behind the blockchain technology.


We study the algorithmic basics behind decentralized and consistent storage systems that tolerate churn and malicious behavior of participating nodes. We begin with the study of classical protocols for reconfigurable storage and Byzantine fault-tolerance. Then we explore the protocols designed for "open" systems, exemplified by the prominent blockchain technology.

Prerequisites: SLR206

SLR 209 SLR seminar (24h, 2,5 ECTS) , (Petr Kuznetsov, Patrick Bellot)


This module allows the students to deepen the understanding of distributed software systems gained in the SLR track. Each student will study a topic and present it at the seminar organized at the end of the period. The outcome of the project can include a “proof of concept “ implementation.


Teachers offer different study subjects with a basic bibliography. These topics concern the large-scale distributed computing: modelling, verification, distributed algorithms, blockchain, architecture, middleware, virtualization, parallelization, methodology, etc.

Each student chooses a topic to study, discusses it with the topic supervisor in several scheduled meetings, writes a short report and prepares a presentation.