Skip to main content
CODE 101809
ACADEMIC YEAR 2026/2027
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR INFO-01/A
LANGUAGE English
TEACHING LOCATION
  • GENOVA
SEMESTER 1° Semester

OVERVIEW

This course introduces some of the main design issues for distributed systems (i.e., systems made of networked computers that communicate and coordinate by passing messages to each other).

Topics like performance, availability and security are discussed, and students make hands-on experience on simulated and real systems.

AIMS AND CONTENT

LEARNING OUTCOMES

The teaching unit aims to introduce the fundamental design principles for distributed systems, in particular with respect to reliability, availability, and fault tolerance. A few chosen architectures are analyzed more in depth.

AIMS AND LEARNING OUTCOMES

  • 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
  • DESCRIBE the principles for data distribution
  • EVALUATE the impact of some design choices through simulation

PREREQUISITES

To be successful in this course, students should already know:

  • data structures and algorithms
  • client-server architectures
  • network protocols
  • basic security topics

Programming skills are required for the practical activities, which will be carried out in Python.

TEACHING METHODS

Lectures and practical exercises.

SYLLABUS/CONTENT

  • 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: distributed hash tables
    • Incentives to cooperation: BitTorrent
  • ​Introduction to Large-Scale Data Processing
    • The MapReduce paradigm
    • The design of Hapace Hadoop and Apache Spark
  • Introduction to Large-Scale Distributed Data Systems
    • Principles
    • Architectural approaches

RECOMMENDED READING/BIBLIOGRAPHY

Scientific papers covering the topics of the syllabus will be suggested during the course. The course material will be presented on Aulaweb.

TEACHERS AND EXAM BOARD

LESSONS

LESSONS START

According to the calendar approved by the Degree Program Board: https://corsi.unige.it/en/corsi/11964/studenti-orario

 

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

Test taken in the laboratory as a quiz on Aulaweb, and oral examination, with discussion of the test and assignments.

Guidelines for students with certified Specific Learning Disorders, disabilities, or other special educational needs are available at https://corsi.unige.it/en/corsi/11964/studenti-disabilita-dsa

ASSESSMENT METHODS

The Aulaweb quiz will evaluate the understanding of topics addressed during the lectures.

For each assignment, the technical skills and maturity acquired by the students will be assessed during the oral examination.

The exam will allow the teachers to complete their evaluation with questions on the course program. 

FURTHER INFORMATION

For further information, please refer to the course’s AulaWeb module or contact the instructors.