Salta al contenuto principale
CODICE 101809
ANNO ACCADEMICO 2024/2025
CFU
SETTORE SCIENTIFICO DISCIPLINARE INF/01
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 1° Semestre
MATERIALE DIDATTICO AULAWEB

PRESENTAZIONE

Questo insegnamento introduce alcuni dei principali problemi di progettazione per i sistemi distribuiti (cioè, sistemi fatti di computer in rete che comunicano e coordinano passando messaggi l'uno all'altro).

Argomenti come prestazioni, disponibilità e sicurezza vengono discussi e gli studenti fanno esperienza pratica su sistemi simulati e reali.

L'insegnamento è presentato in due versioni: una versione 6 CFU offerta agli studenti del curriculum Software Security & Engineering (SSE) e una versione 9 CFU offerta a quelli del curriculum Data Science & Engineering (DSE). La versione 9 CFU offre un'introduzione più approfondita a sistemi ad alta intensità di dati come Apache Hadoop e Spark.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Learning the fundamental design principles for distributed systems and getting more in-depth knowledge of a few chosen architectures relative to the students' curriculum; getting familiarity with the concepts of reliability, availability, and fault tolerance.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Per la versione da 6 CFU del corso:

  • SPIEGARE le ragioni per utilizzare (o non utilizzare) sistemi distribuiti
  • DISCUTERE le motivazioni chiave e le idee per soluzioni del problema del consenso distribuito
  • RIASSUMERE alcuni risultati importanti sullo scheduling per i sistemi distribuiti
  • DISCUTERE le principali motivazioni, problemi e soluzioni legati alla progettazione di architetture peer-to-peer
  • SPIEGARE la progettazione di strumenti di elaborazione dati su larga scala
  • VALUTARE l'impatto di alcune scelte progettuali attraverso la simulazione

Inoltre, per la versione da 9 CFU del corso,

  • RISOLVERE le attività di programmazione in modo efficiente utilizzando strumenti di elaborazione dati su larga scala

PREREQUISITI

Per seguire con successo questo corso, gli studenti devono già conoscere:

  • strutture dati e algoritmi di base
  • le architetture client-server
  • i protocolli di rete
  • i principali argomenti di base di sicurezza informatica

Per le attività pratiche è necessario avere buone capacità di programmazione; nel corso si userà prevalentemente Python.

MODALITA' DIDATTICHE

Lezioni ed esercitazioni pratiche.

PROGRAMMA/CONTENUTO

  • Transazioni e consenso
    • Proprietà ACID  e teorema CAP
    • Algoritmi di consenso: Paxos, Raft
    • Applicazioni concrete: Zookeeper, Google Cloud Spanner
  • Code e scheduling
    • Teoria sul problema della definizione delle priorità e dell'assegnazione del lavoro in un sistema distribuito
  • Erasure coding
    • Come garantire in modo efficiente la disponibilità dei dati
  •  Sistemi peer-to-peer (P2P)
    • Tor: un sistema per consentire la comunicazione anonima
    • Ricerca nei sistemi P2P: reti non strutturate, superpeer, tabelle hash distribuite
    • Incentivi alla cooperazione: BitTorrent
    • Eventual consistency: l'esempio di Amazon Dynamo
  •  Introduzione all'elaborazione dei dati su larga scala
    • Il paradigma MapReduce
    • La progettazione di Hapace Hadoop e Apache Spark

Per la versione da 9 CFU:

  • Sistemi dati distribuiti: panoramica, partizionamento, replica
  • Architettura containerizzata: Docker
  • Esercitazioni con PySpark

TESTI/BIBLIOGRAFIA

Durante il corso verranno suggeriti articoli scientifici sugli argomenti trattati durante le lezioni. Tutto il materiale necessario per preparare il corso sarà presente su AulaWeb.

DOCENTI E COMMISSIONI

Commissione d'esame

GIORGIO DELZANNO (Presidente)

MARINA RIBAUDO

MATTEO DELL'AMICO (Presidente Supplente)

LEZIONI

INIZIO LEZIONI

Segue il calendario ufficiale del Master in Informatica, disponibile su EasyAcademy.

Orari delle lezioni

L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy

ESAMI

MODALITA' D'ESAME

Versione da 6 CFU:

Esame scritto e discussione orale dell'esame e degli esercizi pratici assegnati durante il corso.

Versione da 9 CFU:

Valutazione dei compiti ed esame scritto.

MODALITA' DI ACCERTAMENTO

Per ciascun compito, la qualità del codice e delle relazioni indicherà le competenze tecniche acquisite dagli studenti.

L'esame consentirà ai docenti di completare la valutazione con domande sul programma del corso.

Calendario appelli

Data appello Orario Luogo Tipologia Note
08/01/2025 14:00 GENOVA Scritto
11/02/2025 14:00 GENOVA Scritto
04/06/2025 14:00 GENOVA Scritto
11/07/2025 14:00 GENOVA Scritto
16/09/2025 14:00 GENOVA Scritto

ALTRE INFORMAZIONI

Vedete la pagina AulaWeb del corso.