93468 - DISTRIBUTED SOFTWARE SYSTEMS

Anno Accademico 2023/2024

  • Docente: Paolo Ciancarini
  • Crediti formativi: 6
  • SSD: INF/01
  • Lingua di insegnamento: Inglese
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Bologna
  • Corso: Laurea Magistrale in Informatica (cod. 5898)

Conoscenze e abilità da conseguire

Il corso presenta le principali tecnologie attualmente usate per sviluppare sistemi software distribuiti. Inizialmente si introducono i principi fondamentali dei sistemi distribuiti e successivamente si discutono le tecnologia middleware che mettono a disposizione piattaforme per la programmazione distribuita. Questo materiale introduttivo è seguito dalla descrizione delle principali architetture per la realizzazione di sistemi distribuiti, incluse quelle per implementare applicazioni basate su servizi in ambiente cloud. Alla fine del corso lo studente saprà selezionare la piattaforma middleware appropriata per un dato problema, e sarà in grado di applicare le tecnologie presentate per risolvere casi di studio pratici. L'esame consisterà di 1) una presentazione preliminare di un articolo di ricerca scelto dallo studente e di 2) un progetto finale assegnato dal docente.

Contenuti

This advanced course is taught in English. It presents the main ideas and technologies useful for designing modern distributed systems, especially middleware, microservices, and API oriented design. At the end of the course the students will be able to select the best kind of middleware platform for a given problem and they will be able to apply the main distributed algorithms studied to solve practical case studies.

Prerequisites:

Be able to program with an o-o language like Java or C#

Basic notions of software engineering (eg. agile, UML)

IMPORTANT: you should be able to recognize and use the main design patterns

The concept of distributed system is introduced first, then the concept of middleware technology as a distributed programming platform. Some fundamental principles of distributed systems will be explained. This introductory material is followed by a description of the main classes of middleware systems, including those for implementing service-based applications, streaming systems and and distributed ledgers.

Syllabus

- Introduction to distributed systems and middleware technologies

- Fundamentals of distributed computing and distributed algorithms

- Naming services, security management

- Principles of concurrent programming for distributed object-based systems

- Object-Oriented Middleware (RMI) and Service-Oriented Middleware

- Peer to peer systems, coordination of P2P systems, examples of programming P2P systems

- Fundamentals of distributed ledgers and blockchain


Testi/Bibliografia

vanSteen and Tanenbaum, Distributed Systems, 4ed, 2023

Gorton, Foundations of scalable systems, O’Reilly, 2022

Metodi didattici

Lectures

Presentation of case studies (frameworks, middleware)

Modalità di verifica e valutazione dell'apprendimento

•Attending class 10%

•Midterm report & presentation: 25%

•Project and final report 65%

A project (single developer or small team) concerning a distributed system, assigned by the instructor.

Intermediate (midterm): personal report on relevant distributed concepts or systems

Strumenti a supporto della didattica

Java

Python

various libraries for distributed programming and middleware

Orario di ricevimento

Consulta il sito web di Paolo Ciancarini

SDGs

Istruzione di qualità Imprese innovazione e infrastrutture Città e comunità sostenibili

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.