Distributes Systems — Module 2
A.Y. 2024/2025
Compiled on: 2025-06-30
— printable version
Teachers
Prof. Giovanni Ciatto
Tutor Matteo Magnini
- All technical question
- Any other non-personal question
When using the email
- Include all teachers in CC, always, there including prof. Omicini
- Clarify the academic year and the name of the course in the subject
Organization of Module 2
- Lectures in lab with immediate hands-on
- Exercises and examples in Python
- submission of exercises via GitHub may grant you extra points
- Final project work in any language of your choice
- Wednesday 15:00–17:00 (2h) — Lab 3.1
Changes will be published on the News forum
Workflow for the project work (pt. 1)
Detailed rules here: https://apice.unibo.it/xwiki/bin/view/Course/Ds2425/Projects/Rules
-
Propose your project idea on the Projects forum
- 1-3 students per group
- open a discussion thread named
[Surname1, Surname2, ...] Project Proposal: <your project name>
-
Any subsequent communication on the project should be done on the same thread
- use the thread as a backlog of any official communication concerning the administration of your project work
- if you want to talk privately about your project work, mention the URL of your project’s thread in your email
-
Wait for the teachers to approve your proposal
- most likely, we’ll try to estimate the effort and ask for changes if too much or too little
- we’ll also check for overlaps with other groups
-
Create a GitHub repository where to develop your project and post the URL onto your project’s thread
- make all the members of the group collaborators on the repository
- give full admin rights to the teachers:
Workflow for the project work (pt. 2)
Detailed rules here: https://apice.unibo.it/xwiki/bin/view/Course/Ds2425/Projects/Rules
-
Work on your project:
- commit and push your changes often
- only the
master
or main
branch will be considered for the evaluation
- in parallel, or later, write a report about your report following this template
-
Once done, post a message on your project’s thread to signal the end of the work
- we’ll clone your repository and evaluate the code
-
Edits may be requested by the teachers, to either the code or the report (or both)
-
Once the teachers are satisfied, you’ll be requested to present your work to prof. Omicini
- after setting up a meeting with him, in private
- 12-15 minutes presentation + 5-10 minutes Q&A
Goals
- Teach you how to design and develop Distributed Systems, in practice…
- … via a running example (namely, distributed Pong)
- Give you a reference for developing your final project work
Topics
- Distributed architectures and protocols
- Communication mechanisms (TCP / UDP sockets)
- Presentation (serialization and deseralization)
- Issues of distributed systems programming
- [Hopefully] Testing distributed systems
- [Hopefully] Overview on distributed programming frameworks / libraries
Prerequisites
- Basic knowledge of Python (see Python Programming 101 if missing)
- Basic knowledge of Git (see these slides if missing)
- Basic knowledge of Linux shell (see these slides if missing)
- Basic understanding of computer networks, ISO/OSI model, TCP/IP stack
Software Requirements
Required
- A working internet connection
- A working Python 3.10+ installation
Recommended
- PyCharm OR Visual Studio Code
- A decent Unix terminal
- prefer Git Bash on Windows