Information updated until 30/06/2026 CODE 101809 ACADEMIC YEAR 2026/2027 CREDITS 6 cfu anno 1 COMPUTER SCIENCE 11964 (LM-18) - GENOVA 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 MATTEO DELL'AMICO Ricevimento: By appointment (in person or online), taken via email (matteo.dellamico@unige.it). BARBARA CATANIA Ricevimento: Appointment by email or by Microsoft Teams Office: Valle Puggia – 327 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.