SISTEMI DISTRIBUITI
cod. 1000084

Anno accademico 2024/25
2° anno di corso - Secondo semestre
Docente
Agostino POGGI
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
Ingegneria informatica
Tipologia attività formativa
Caratterizzante
72 ore
di attività frontali
9 crediti
sede: PARMA
insegnamento
in ITALIANO

Obiettivi formativi

.Il corso intende fornire una conoscenza approfondita sugli algoritmi usati per garantire il buon funzionamento di un sistema distribuito, sulle architetture e i modelli che li caratterizzano, e sulle tecniche e tecnologie utilizzate per il loro sviluppo.
Inoltre, il corso ha l’obiettivo di fornire una buona capacità di utilizzare la conoscenza acquisita, l’esperienza accumulata durante le esercitazioni, per individuare le migliori soluzioni distribuite di un problema, e per realizzare delle implementazioni soddisfacenti, sia per quanto riguarda la qualità del sistema realizzato, e sia per quanto riguarda il costo dello sviluppo.

Prerequisiti

Ingegneria del Software, Basi di Dati.

Contenuti dell'insegnamento

Il corso presenta le caratteristiche principali dei sistemi distribuiti e le tecniche e tecnologie per il loro sviluppo.
In particolare, il corso affronta i seguenti argomenti:
Introduzione
Middleware
Sincronizazione e coodinazione
Affidabilità e scalabilità
Tecniche e strumenti di sviluppo
Applicazioni
Cooperazione negozione
Sistemi e simulazione multi-agente
Java per i sistemi distribuiti.

Programma esteso

Caratteristiche dei sistemi distribuiti
Modelli architetturali
Middleware
Rissoluzione dei nomi
Communicazione
Sincronizzazione
Tolleranza ai guasti
Transazioni distribuite
Progettazione
Applicazioni
Sistemi multi agente
Simulazione multi-agente
Java per i sistemi distribuiti

Bibliografia

A. Tanenbaum - M. Van Steen. Distributed Systems. Prentice Hall, 4th edition, 2023

Metodi didattici

Il corso si basa su lezioni teoriche ed esercitazioni di laboratorio. In particolare, le attività di laboratorio, saranno dedicate allo sviluppo di alcune applicazioni e sistemi software utilizzando il linguaggio Java e gli strumenti presentati durante il corso. In queste attività, gli studenti opereranno individualmente o a coppie, chiaramente sotto la guida e con il supporto del docente del corso e senza precludere positive interazioni tra gli studenti. Le slide utilizzate a supporto delle lezioni verranno caricate sulla piattaforma Elly prima di ogni lezione. Per scaricare le slide è necessaria l’iscrizione al corso attraverso la piattaforma Elly . Le slide vengono considerate parte integrante del materiale didattico. Quindi gli studenti non frequentanti dovranno controllare il materiale didattico e le indicazioni fornite dal docente disponibili sulla piattaforma Elly.

Modalità verifica apprendimento

Sono previste delle prove scritte e delle prove pratiche.
Le prove scritte si basano su domande a risposte aperte sulla teoria a cui rispondere senza l'aiuto di appunti e libri. Queste domande hanno lo scopo di valutare la conoscenza acquisita sugli argomenti discussi durante il corso.
Le prove pratiche consistono nello sviluppo di applicazioni e sistemi software e possono essere svolte dagli studenti in modo individuale o in gruppi con massimo 2 persone.
Queste prove hanno lo scopo principale di valutare la capacità di applicare la conoscenza acquisita durante il corso. Inoltre, la valutazione delle prove dipenderà dalla qualità delle applicazioni e dei sistemi sviluppati, della relativa documentazione.
La durata di una prova scritta è pari a 1 ora e trenta minuti; la durata di una prova pratica dipenderà dalla complessità dell'assegnamento.
Le prove scritte e pratiche sono valutate con scala 0-30. Una prova è superata se il suo risultato è maggiore o uguale a 18. Il voto finale è uguale alla media aritmetica dei voti delle prove. La lode può essere assegnata nel caso del raggiungimento del massimo punteggio su tutte le prove.

Altre informazioni

- - -