Salta al contenuto principale
CODICE 101809
ANNO ACCADEMICO 2023/2024
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 how to design high quality distributed systems, ranging from classical client-server to peer-to-peer and blockchain-based systems, and applying classical mathematical tools to measure reliability, availability, and fault tolerance.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

  • EXPLAIN the reasons for using (or not using) distributed systems
  • DISCUSS the key motivations and ideas for solutions of the problem of distributed consensus
  • SUMMARIZE some important results about scheduling for distributed systems
  • DISCUSS the main motivations, issues and solutions related to the design of peer-to-peer architectures
  • EXPLAIN the design of large-scale data processing tools
  • EVALUATE the impact of some design choices through simulation

For the 9 CFU version of the course:

  • SOLVE programming tasks efficiently using large-scale data processing tool

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, esercitazioni pratiche e studio a casa.

PROGRAMMA/CONTENUTO

 

  • Transactions and Consensus
    • ACID properties and the CAP theorem
    • Consensus algorithms: Paxos, Raft
    • Concrete applications: Zookeeper, Google Cloud Spanner
  • Queueing and Scheduling
    • Some theory on the problem of prioritizing and dispatching jobs to workers in a distributed system
  • Erasure Coding
    • How to efficiently guarantee data availability
  • Peer-to-Peer (P2P) Systems
    • Tor: a system for enabling anonymous communication
    • Searching in P2P systems: unstructured networks, superpeers, distributed hash tables
    • Incentives to cooperation: BitTorrent
    • Eventual consistency: the example of Amazon Dynamo
  • Introduction to Large-Scale Data Processing
    • The MapReduce paradigm
    • The design of Hapace Hadoop and Apache Spark

For the 9 CFU version:

  • Distributed data systems: overview, partitioning, replication
  • Containerized architecture: Docker
  • Practices with 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

See the official calendar of the MSc in Computer Science. The schedule for all the courses can be found on EasyAcademy.

Orari delle lezioni

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

ESAMI

MODALITA' D'ESAME

6 CFU version:

Oral examination with discussion of the practical exercises assigned during the course and theory introduced during lectures

9 CFU version:

Evaluation of assignments and written exam.

MODALITA' DI ACCERTAMENTO

For each assignment, the quality of the code and the reports will indicate the technical skills acquired by the students.

The oral (6 CFU) and written (9 CFU) exam will allow the teachers to complete their evaluation with questions on the course program. 

ALTRE INFORMAZIONI

See the AulaWeb page for the course.