Salta al contenuto principale
CODICE 101809
ANNO ACCADEMICO 2026/2027
CFU
SETTORE SCIENTIFICO DISCIPLINARE INFO-01/A
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 1° Semestre

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.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Lo scopo dell'insegnamento è introdurre i principi fondamentali di progettazione per i sistemi distribuiti e la loro relazione con affidabilità, disponibilità e tolleranza ai guasti. Alcune architetture scelte vengono analizzate più approfonditamente.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

  • 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
  • DESCRIVERE i principi relativi alla distribuzione dei dati
  • VALUTARE l'impatto di alcune scelte progettuali attraverso la simulazione

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: tabelle hash distribuite
    • Incentivi alla cooperazione: BitTorrent
  •  Introduzione all'elaborazione dei dati su larga scala
    • Il paradigma MapReduce
    • La progettazione di Hapace Hadoop e Apache Spark
  • Introduzione ai sistemi di dati distribuiti su larga scala
    • Principi
    • Approcci architetturali

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

LEZIONI

INIZIO LEZIONI

In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica: https://corsi.unige.it/corsi/11964/studenti-orario

 

Orari delle lezioni

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

ESAMI

MODALITA' D'ESAME

Verifica svolta in laboratorio come quiz su Aulaweb e discussione orale dell'esame e degli esercizi pratici assegnati durante il corso.

Indicazioni per studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali sono disponibili a partire da https://corsi.unige.it/corsi/11964/studenti-disabilita-dsa

MODALITA' DI ACCERTAMENTO

Il quiz su Aulaweb valuterà la comprensione degli argomenti trattati durante le lezioni.

Per ogni compito, le competenze tecniche e la maturità acquisite dagli studenti saranno valutate durante l'esame orale.

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

ALTRE INFORMAZIONI

Per ulteriori informazioni, consultare il modulo Aulaweb dell'insegnamento o contattare il docente.