Vai al contenuto principale
Se prosegui nella navigazione del sito, ne accetti le politiche:
  • Condizioni di utilizzo e trattamento dei dati
Prosegui
x
e-Learning - UNIMIB
  • Home
  • Calendario
  • My Media
  • Altro
Ascolta questa pagina con ReadSpeaker
Italiano ‎(it)‎
English ‎(en)‎ Italiano ‎(it)‎
Ospite
 Login
e-Learning - UNIMIB
Home Calendario My Media
Percorso della pagina
  1. Area di Scienze
  2. Corso di Laurea Triennale
  3. Informatica [E3102Q - E3101Q]
  4. Insegnamenti
  5. A.A. 2025-2026
  6. 2° anno
  1. Sistemi Distribuiti
  2. Introduzione
Insegnamento Titolo del corso
Sistemi Distribuiti
Codice identificativo del corso
2526-2-E3101Q112
Descrizione del corso SYLLABUS

Syllabus del corso

  • Italiano ‎(it)‎
  • English ‎(en)‎
Esporta

Obiettivi

Conoscenza e capacità di comprensione

Al termine del corso, lo studente avrà acquisito:

  • Conoscenze fondamentali sulle architetture, i modelli di comunicazione e le proprietà distintive dei sistemi distribuiti, con particolare riferimento ai paradigmi client-server e peer-to-peer
  • Comprensione dei principali modelli di comunicazione asincrona e sincrona, inclusi i modelli message-oriented (persistenti e transienti) e le interazioni push/pull
  • Conoscenza delle tecnologie per la comunicazione tra componenti distribuite, come socket TCP/IP, Remote Procedure Call (RPC) e Remote Method Invocation (RMI)
  • Comprensione dei meccanismi di funzionamento delle applicazioni Web distribuite, comprese le fondamenta di HTTP, REST, e dei principali pattern architetturali come MVC
  • Conoscenza dei concetti fondamentali di programmazione concorrente e dei modelli a stati per la modellazione del comportamento dei sistemi distribuiti
  • Capacità di analizzare criticamente le condizioni in cui è opportuno applicare soluzioni distribuite a problemi computazionali concreti

Conoscenza e capacità di comprensione applicate

Al completamento del corso, lo studente sarà in grado di:

  • Progettare e sviluppare semplici applicazioni distribuite su architetture Web utilizzando Java, servlet/JSP, JavaScript e tecniche AJAX
  • Utilizzare socket TCP/IP per l’implementazione di modelli client-server e peer-to-peer
  • Applicare tecnologie per la comunicazione remota tra componenti, incluso l’uso di RPC e RMI
  • Integrare tecnologie web (HTML5, CSS, JSON, REST API) per la creazione di applicazioni distribuite interattive e dinamiche
  • Progettare e implementare applicazioni concorrenti in Java utilizzando thread, sincronizzazione e monitor
  • Sperimentare con tecnologie e strumenti studiati tramite esercitazioni e attività di laboratorio orientate allo sviluppo

Competenze trasversali

Il corso contribuisce allo sviluppo delle seguenti competenze trasversali:

Autonomia di giudizio: attraverso esercitazioni progettuali che richiedono valutazioni critiche sull’adozione di modelli e tecnologie in scenari reali.

Abilità comunicative: mediante la produzione di documentazione tecnica e la discussione delle soluzioni sviluppate durante le attività pratiche.

Capacità di apprendere: fornendo strumenti teorici, metodologici e pratici che consentono allo studente di approfondire e aggiornare in autonomia le proprie competenze nell’ambito dei sistemi distribuiti.

Contenuti sintetici

Contenuti sintetici

  • Architetture distribuite: modelli client-server, peer-to-peer e tiered
  • Comunicazione tra processi: socket TCP/IP, RPC, RMI, messaging asincrono
  • Applicazioni Web distribuite: HTTP, REST, servlet/JSP, pattern MVC
  • Applicazioni Web Dinamiche: JavaScript, AJAX, cenni a Node.js
  • Rappresentazione dei dati: HTML5, CSS, JSON, XML
  • Concorrenza: programmazione multi-thread in Java, sincronizzazione
  • Laboratorio: sviluppo guidato di applicazioni distribuite

Programma esteso

Programma esteso

  1. Fondamenti dei Sistemi Distribuiti
    Definizioni e proprietà caratteristiche dei sistemi distribuiti. Modelli architetturali di riferimento: client-server, peer-to-peer, architetture a livelli (layered) e a tier. Nomi, identificatori e indirizzi: URI e DNS.

  2. Modelli di Comunicazione
    Modelli di comunicazione sincrona e asincrona. Comunicazione orientata ai messaggi: modelli persistenti e transienti. Interazioni push e pull.

  3. Tecnologie di Comunicazione
    Programmazione socket TCP/IP: applicazioni client-server e protocolli applicativi. Comunicazione basata su chiamata di procedura: Remote Procedure Call (RPC) e Remote Object Invocation (Java RMI).

  4. Applicazioni Web Distribuite
    Fondamenti del Web: URI e protocollo HTTP. Meccanismi di request/response. Progettazione di applicazioni Web tramite servlet e JSP. Pattern architetturale Model-View-Controller (MVC). Introduzione ai servizi web REST e alle Web API.

  5. Applicazioni Web Dinamiche
    Introduzione a JavaScript e tecniche AJAX. Sviluppo di applicazioni interattive lato client. Debugging e modifica dinamica di pagine web. Invocazione di servizi remoti. Cenni all'uso di Node.js.

  6. Modellazione e Rappresentazione dei Dati
    HTML5 e CSS per la presentazione dei dati. XML e JSON come formati per il trasferimento di informazioni. Esempi di mashup basati su API.

  7. Programmazione Concorrente
    Concetti di sincronizzazione e utilizzo dei monitor. Programmazione multi-thread in Java con memoria condivisa. Cenni alla modellazione del comportamento mediante automi a stati finiti.

  8. Attività Laboratoriali
    Progettazione e sviluppo di semplici applicazioni distribuite. Sperimentazione guidata delle tecnologie presentate durante il corso, con supporto alla realizzazione di un progetto opzionale.

Prerequisiti

I prerequisiti per questo corso includono le seguenti conoscenze e competenze:

  • Programmazione a oggetti in Java e test JUnit: Questa conoscenza è attesa dal corso di "Programmazione 2".
  • Processi e comunicazione tra processi: Questo argomento è trattato nel corso di "Reti e Sistemi Operativi".
  • Protocollo TCP/IP: Anche questo proviene dal corso di "Reti e Sistemi Operativi".
  • Linguaggi di markup (XML e HTML) e relativi strumenti di manipolazione: Ciò include la comprensione e l'utilizzo di questi linguaggi.
  • Automi a Stati Finiti: Questa conoscenza deriva dal corso di "Linguaggi e Computabilità".

Modalità didattica

La didattica dell'insegnamento è organizzata in diverse componenti:

  • Didattica Erogativa (Lezioni e Esercitazioni in Aula):

    • Sono previste 32 ore di lezioni frontali.
    • Verranno svolte 20 ore di esercitazioni in aula.
    • Fino a un massimo del 20% delle lezioni e delle esercitazioni potranno essere erogate a distanza tramite registrazioni audio-video.
  • Didattica Interattiva (Laboratorio e Supporto Online):

    • Sono previste 24 ore aggiuntive di attività in laboratorio.
    • Verranno offerte dimostrazioni o spiegazioni supplementari attraverso il sito web di e-learning.
    • Il sito di e-learning includerà anche strumenti di supporto come forum web e FAQ per favorire l'interazione.
    • Queste attività hanno lo scopo di fornire supporto da parte dei docenti e degli studenti, offrendo dimostrazioni o suggerimenti pratici per la risoluzione di problemi ed esercizi.
    • Un supporto specifico verrà fornito per il progetto facoltativo al termine delle attività di laboratorio.
  • Studio Individuale:

    • L'attività di studio autonomo sarà supportata da:
      • Libri di testo consigliati.
      • Materiali didattici disponibili sul sito di e-learning.
  • Lingua di Erogazione:

    • L'insegnamento verrà erogato in lingua italiana.

Materiale didattico

Sul sito elearning sono disponibili:

  • le slide delle lezioni in formato pdf.
  • ulteriore materiali (articoli a completamento dei testi di riferimento, link a risorse in rete, esercizi da svolgere) .
  • il materiale e le soluzioni degli esercizi svolti in laboratorio.

Testi di riferimento:

Distributed Systems: Principles and Paradigms - 2nd edition, Andrew S. Tanenbaum and Maarten van Steen, Pearson - Prentice Hall, 2007. Traduzione italiana: Sistemi Distribuiti - Seconda edizione, Pearson - Prentice Hall, 2007.

Già adottati nel corso di Reti e Sistemi Operativi:

Reti di calcolatori e internet – Un approccio top-down 4a Edizione, James F. Kurose, Keith W. Ross Addison Wesley – 2008, ISBN 9788871924557
Capitoli 1 e 2

A. Silberschatz, P. Baer Galvin, G. Gagne, Sistemi operativi - Concetti ed esempi, 8/Ed. 2009, ISBN 9788871925691
Capitoli 3, 4, 6, 7 e 16

Periodo di erogazione dell'insegnamento

Secondo semestre

Modalità di verifica del profitto e valutazione

La valutazione del profitto per l'insegnamento di "Sistemi Distribuiti" si articola in diverse componenti, ciascuna con un proprio peso sul voto finale:

  • Esame Finale:

    • L'esame finale può portare a un massimo di 30 punti.
    • Si compone di una prova scritta e di una eventuale prova orale.
    • Prova Scritta in Laboratorio: La prova scritta si svolge in laboratorio al PC ed è divisa in due fasi:
      • Fase 1: Domande Chiuse: Consiste in domande chiuse su tutti gli argomenti del corso. Per accedere alla Fase 2, è necessario superare questa fase ottenendo almeno il 50% di risposte corrette.
      • Fase 2: Domande Miste: Comprende domande aperte o chiuse con commento, relative a tutti gli argomenti trattati.
    • Il superamento dell'esame si ottiene con un punteggio pari o superiore a 18/30.
    • Tipologie di Domande: La prova scritta include:
      • Domande sulle nozioni presentate.
      • Domande di ragionamento e deduzione.
      • Risoluzione di esercizi che richiedono lo sviluppo di una soluzione a un problema assegnato.
  • Prova Orale (Opzionale):

    • La prova orale è a discrezione del docente.
    • Consiste nella restituzione dei compiti scritti, accompagnata da una discussione ed eventuali domande supplementari poste dal docente.
  • Laboratorio (Progetto Facoltativo):

    • La valutazione del laboratorio avviene tramite un progetto finale.
    • Questo progetto è facoltativo e può contribuire al voto finale con un massimo di 4 punti.
  • Prove in Itinere (Sostitutive dell'Esame):

    • Sono previste prove in itinere che sostituiscono il primo appello d'esame. Chi non le sostiene, dovrà presentarsi al secondo appello.
    • Le prove in itinere possono essere sostenute anche dagli studenti iscritti al terzo anno o fuori corso.
    • Prima Prova: Consiste in domande chiuse.
    • Seconda Prova: Consiste in domande chiuse e domande miste.
    • L'ammissione alla seconda prova è consentita a coloro che hanno ottenuto un punteggio pari o superiore a 18/30 nella prima prova.
    • Non sono previsti recuperi per le prove in itinere.
  • Voto Finale:

    • Il voto finale è calcolato come la somma del punteggio ottenuto all'esame finale e dell'eventuale punteggio del progetto facoltativo.

Orario di ricevimento

Prof. Ciavotta: Martedì mattina dalle 12:30 alle 14:30 previo appuntamento scrivendo a michele.ciavotta@unimib.it.

Prof. Savi: Su appuntamento scrivendo a marco.savi@unimib.it

Domande e discussioni sugli argomenti dell'insegnamento possono essere fatte utilizzando i forum presenti in elearning.

Sustainable Development Goals

IMPRESE, INNOVAZIONE E INFRASTRUTTURE
Esporta

Aims

Knowledge and Understanding

By the end of the course, students will have acquired:

  • Fundamental knowledge of the architectures, communication models, and key properties of distributed systems, with particular emphasis on client-server and peer-to-peer paradigms
  • An understanding of both synchronous and asynchronous communication models, including message-oriented (persistent and transient) and push/pull mechanisms
  • Knowledge of the core technologies enabling distributed communication, such as TCP/IP sockets, Remote Procedure Call (RPC), and Remote Method Invocation (RMI)
  • Understanding of the functioning of distributed web applications, including the foundations of HTTP, REST, and architectural patterns such as MVC
  • Knowledge of the fundamental concepts of concurrent programming and the use of state machines for modeling the behavior of distributed systems
  • The ability to critically assess when and how distributed solutions are appropriate for specific computational problems

Applying Knowledge and Understanding

Upon completion of the course, students will be able to:

  • Design and develop basic distributed applications on web architectures using Java, servlets/JSP, JavaScript, and AJAX techniques
  • Employ TCP/IP sockets to implement client-server and peer-to-peer communication models
  • Apply remote communication technologies such as RPC and RMI to support distributed component interaction
  • Integrate web technologies (HTML5, CSS, JSON, REST APIs) to build interactive and dynamic distributed applications
  • Design and implement concurrent applications in Java using threads, synchronization mechanisms, and monitors
  • Experiment with the technologies and tools introduced in the course through hands-on lab sessions and project-based activities

Transversal Skills

The course also fosters the development of the following transversal skills:

Independent judgment: through project work and exercises requiring critical evaluation of technological choices in real-world scenarios.

Communication skills: by producing technical documentation and presenting implemented solutions during practical activities.

Learning skills: by providing theoretical, methodological, and practical tools that enable students to independently deepen and update their expertise in the field of distributed systems.

Contents

Course Content Summary

  • Distributed Architectures: client-server, peer-to-peer, and tiered models
  • Inter-process Communication: TCP/IP sockets, RPC, RMI, asynchronous messaging
  • Distributed Web Applications: HTTP, REST, servlets/JSP, MVC pattern
  • Dynamic Web Application: JavaScript, AJAX, introduction to Node.js
  • Data Representation: HTML5, CSS, JSON, RDF
  • Concurrency: multithreaded programming in Java, synchronization
  • Laboratory: guided development of basic distributed applications

Detailed program

Certamente. Ecco la traduzione formattata con Markdown.

Detailed Syllabus

1. Fundamentals of Distributed Systems

  • Definitions and characteristic properties of distributed systems.
  • Reference architectural models: client-server, peer-to-peer, layered, and tiered architectures.
  • Names, identifiers, and addresses: URI and DNS.

2. Communication Models

  • Synchronous and asynchronous communication models.
  • Message-oriented communication: persistent and transient models.
  • Push and pull interactions.

3. Communication Technologies

  • TCP/IP socket programming: client-server applications and application-level protocols.
  • Procedure call-based communication: Remote Procedure Call (RPC) and Remote Object Invocation (Java RMI).

4. Distributed Web Applications

  • Fundamentals of the Web: URI and the HTTP protocol.
  • Request/response mechanisms.
  • Designing web applications using servlets and JSP.
  • The Model-View-Controller (MVC) architectural pattern.
  • Introduction to REST web services and Web APIs.

5. Dynamic Web Application

  • Introduction to JavaScript and AJAX techniques.
  • Development of interactive client-side applications.
  • Debugging and dynamic modification of web pages.
  • Invoking remote services.
  • A brief overview of Node.js.

6. Data Modeling and Representation

  • HTML5 and CSS for data presentation.
  • XML and JSON as formats for information transfer.
  • Examples of API-based mashups.

7. Concurrent Programming

  • Synchronization concepts and the use of monitors.
  • Multi-threaded programming in Java with shared memory.
  • A brief overview of behavior modeling using finite state machines.

8. Laboratory Activities

  • Design and development of simple distributed applications.
  • Guided experimentation with the technologies presented during the course, with support for the completion of an optional project.

Prerequisites

The prerequisites for this course include the following knowledge and skills:

  • Object-Oriented Programming in Java and JUnit tests: This knowledge is expected from the "Programmazione 2" course.
  • Processes and inter-process communication: This topic is covered in the "Reti e Sistemi Operativi" (Networks and Operating Systems) course.
  • TCP/IP Protocol: Also from the "Reti e Sistemi Operativi" course.
  • Markup Languages (XML and HTML) and related manipulation tools: This includes understanding and working with these languages.
  • Finite State Automata: This knowledge comes from the "Linguaggi e Computabilità" (Languages and Computability) course.

Teaching form

The course's teaching is organized into several components:

  • Lectures and Classroom Exercises:

    • 32 hours of frontal lectures are planned.
    • 20 hours of classroom exercises will be conducted.
    • Up to a maximum of 20% of lectures and exercises may be delivered remotely via audio-video recordings.
  • Interactive Teaching (Laboratory and Online Support):

    • An additional 24 hours of laboratory activities are scheduled.
    • Further demonstrations or explanations will be offered through the e-learning website.
    • The e-learning site will also include support tools such as web forums and FAQs to foster interaction.
    • These activities aim to provide support from instructors and participating students, offering demonstrations or practical suggestions for solving problems and exercises.
    • Specific support will be provided for the optional project at the end of the laboratory activities.
  • Individual Study:

    • Independent study will be supported by:
      • Recommended textbooks.
      • Teaching materials available on the e-learning website.
      • Interactive activities accessible on the e-learning platform.
  • Language of Instruction:

    • The course will be delivered in Italian.

Textbook and teaching resource

On the e-learning site are available :

  • slides of the lessons in pdf format.
  • further material (articles to complete the reference texts, links to online resources, exercises to be carried out).
  • equipment and solutions for exercises carried out in the laboratory.

Textbooks:

Distributed Systems: Principles and Paradigms - 2nd edition, Andrew S. Tanenbaum and Maarten van Steen, Pearson - Prentice Hall, 2007.

Already adopted in the course of Networks and Operating Systems:

Reti di calcolatori e internet – Un approccio top-down 4a Edizione, James F. Kurose, Keith W. Ross Addison Wesley – 2008, ISBN 9788871924557
Chapter 1, 2

A. Silberschatz, P. Baer Galvin, G. Gagne, Sistemi operativi - Concetti ed esempi, 8/Ed. 2009, ISBN 9788871925691
Chapter 3, 4, 6, 7, 16

Semester

Second semester

Assessment method

The assessment of learning for the "Distributed Systems" course is structured into several components, each contributing to the final grade:

  • Final Exam:

    • The final exam can contribute up to 30 points.
    • It consists of a written test and a possible oral examination.
    • Written Test in the Laboratory: The written test is conducted in the laboratory on a PC and is divided into two phases:
      • Phase 1: Closed Questions: This phase consists of closed questions on all course topics. To access Phase 2, it is necessary to pass this phase by achieving at least 50% correct answers.
      • Phase 2: Mixed Questions: This phase includes open or closed questions with comments, covering all topics discussed.
    • Passing the exam requires a score of 18/30 or higher.
    • Types of Questions: The written test includes:
      • Questions on the concepts presented.
      • Reasoning and deduction questions.
      • Problem-solving exercises requiring the development of a solution to an assigned problem.
  • Oral Exam (Optional):

    • The oral exam is at the discretion of the instructor.
    • It involves the review of the written assignments, accompanied by a discussion and any additional questions posed by the instructor.
  • Laboratory (Optional Project):

    • Laboratory evaluation is based on a final project.
    • This project is optional and can contribute up to 4 points to the final grade.
  • Mid-term Tests (Substitute for the Exam):

    • Mid-term tests are scheduled and substitute for the first exam session. Students who do not take them will need to sit for the second session.
    • These mid-term tests can also be taken by students enrolled in their third year or those who are off-course (fuori corso).
    • First Test: Consists of closed questions.
    • Second Test: Consists of closed questions and mixed questions.
    • Admission to the second test is granted to those who achieved a score of 18/30 or higher in the first test.
    • There are no make-up opportunities for the mid-term tests.
  • Final Grade:

    • The final grade is calculated as the sum of the score obtained in the final exam and the optional project score.

Office hours

Prof. Ciavotta: Tuesday from 12:30 to 14:30 by appointment.

Prof. Savi: By appointment via email at marco.savi@unimib.it.

Questions and discussions on teaching topics can be posed using the forums in e-learning.

Sustainable Development Goals

INDUSTRY, INNOVATION AND INFRASTRUCTURE
Entra

Scheda del corso

Settore disciplinare
INF/01
CFU
8
Periodo
Secondo Semestre
Tipo di attività
Obbligatorio
Ore
76
Tipologia CdS
Laurea Triennale
Lingua
Italiano

Staff

    Docente

  • Michele Ciavotta
    Michele Ciavotta
  • Marco Savi
    Marco Savi

Opinione studenti

Vedi valutazione del precedente anno accademico

Bibliografia

Trova i libri per questo corso nella Biblioteca di Ateneo

Metodi di iscrizione

Iscrizione manuale

Obiettivi di sviluppo sostenibile

IMPRESE, INNOVAZIONE E INFRASTRUTTURE - Costruire una infrastruttura resiliente e promuovere l'innovazione ed una industrializzazione equa, responsabile e sostenibile
IMPRESE, INNOVAZIONE E INFRASTRUTTURE

Ospite (Login)
Politiche
Ottieni l'app mobile
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy
  • Accessibilità
  • Statistiche