- Docente: Antonio Corradi
- Crediti formativi: 9
- Lingua di insegnamento: Italiano
- Moduli: Antonio Corradi (Modulo 1) Luca Foschini (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
-
Corso:
Laurea in
Ingegneria informatica (cod. 9254)
Valido anche per Laurea in Ingegneria informatica (cod. 9254)
Conoscenze e abilità da conseguire
Conoscenza dei modelli, dei protocolli e degli strumenti per lo sviluppo di applicazioni di rete e sistemi distribuiti. Capacità di progetto e realizzazione di applicazioni in reti di calcolatori.
Contenuti
Il corso si articola in lezioni frontali e laboratorio in modo integrato e molto collegato. Le esercitazioni propongono progetti sugli strumenti svolti a lezione da svolgere individualmente e in gruppo in laboratorio.
1. Generalità e Concetti di Base Generalità dei sistemi distribuiti
- inquadramento generale e definizioni di base
- sistemi distribuiti decentralizzati ed eterogenei
- necessità di standardizzazione delle soluzioni (ISO/OSI ed Internet)
Si presentano alcuni modelli caratteristici, come
- modello di interazione cliente/servitore
- modelli a memoria condivisa ed a scambio di messaggi
- modelli di connessione, di replicazione, ecc.
2. Ambienti Standard
Standardizzazione
Organizzazione a livelli ISO OSI
- livello di trasporto e di rete
- livelli applicativi: sessione, presentazione, e applicazione
Alcune applicazioni standard distribuite
3. Protocolli TCP/IP
I protocolli della suite TCP/IP: livelli di rete e di trasporto
Applicazioni comuni per:
- servizi sincroni: terminale remoto virtuale, trasferimento di file,
- servizi asincroni: mail, news, e altri
Alcuni strumenti a larga diffusione in ambiente UNIX e Windows ai diversi livelli
4. Alcuni strumenti di riferimento
Lo strumento principale a livello di protocollo sono le socket di comunicazione e a livello applicativo le proposte Cliente /Servitore.
Socket e relative primitive Socket in C (per UNIX) e in Java
Esempi di interazione in sistemi UNIX e collegamenti con TCP/IP
Alcune applicazioni cliente servitore:
- Chiamate di Procedura Remota o RPC
- RMI, operazioni remote in Java
5. Sistemi Operativi Distribuiti e servizi
Sistemi operativi distribuiti
Naming delle risorse
Granularità dei processi e loro interazione
Gestione delle risorse
File system
Alcuni problemi e possibili soluzioni
Sistemi di nomi e DNS
Soluzioni per evitare congestione ed evoluzione dei protocolli.
Testi/Bibliografia
G. Coulouris, J. Dollimore, T. Kindberg: 'Distributed Systems: concepts and Design', quinta edizione, Addison-Wesley, 2012.
M.L. Liu: 'Distributed Computing', Addison-Wesley, 2003.
J.F. Kurose, K.W. Ross: 'Internet e Reti', McGraw-Hill, 2001 (tradotto nel 2001 da 'Computer Networking: a Top-Down Approach Featuring the Internet', 2001).
A.S. Tanenbaum, M. V.Steen: "Distributed Systems: Principles and Paradigms", Prentice-Hall, seconda edizione 2007, e prima 2002.
B. Forouzan, F. Mosharraf: “Computer Networks, a top down approach”, McGraw-Hill, 2012.
D. Reilly, M. Reilly: "Java Network Programming and Distributed Computing", Addison-Wesley, 2002.
A.S. Tanenbaum: 'Computer Networks', Prentice-Hall, 1988 (tradotto in 'Reti di Calcolatori', Jackson).
Metodi didattici
Il corso si articola in lezioni frontali e laboratorio in modo integrato e molto collegato.
Le esercitazioni propongono progetti sugli strumenti svolti a lezione e da svolgere a gruppi e presentare successivamente in laboratorio, discutendone con i docenti secondo uno scheduling molto integrato con le lezioni. Le esercitazioni entrano così a fare parte della valutazione.
Le esercitazioni durante il corso sono svolte con la stessa modalità del progetto finale (parte in ambiente C e in Java).
In particolare si richiedono competenze per il progetto di piccoli casi cliente/servitore, in diversi ambiti e con diversi strumenti:
- socket da usare in C e Java, per diversi protocolli e diversi casi di uso;
- RPC, per progetto di clienti e servitori ad alto livello, con tecnologie SUN;
- RMI, per progetto in Java di clienti servitori.
La frequenza è particolarmente importante per la verifica delle proprie conoscenze e del proprio stato di avanzamento.
Lo studente è responsabile delle proprie risorse di calcolo e del materiale che ha a disposizione per lo svolgimento delle prove:
in particolare si richiede una autonomia di soluzione e capacità di svolgere semplici progetti in tempi limitati, usando le risorse messe a disposizione in laboratorio.
Le prove eseguite in laboratorio sono personali e senza comunicazione tra studenti: qualunque tentativo di frode o copiare verrà perseguito e punito.
URL: lia.disi.unibo.it/Courses/RetiT
Modalità di verifica e valutazione dell'apprendimento
Obiettivo è verificare le capacità operative dello studente e le sua autonomia in una soluzione.
Gli esami consistono di
- Una prova scritta svolta come un progetto in laboratorio con tempo limitato e qualunque materiale di supporto; la prova consiste di due parti, che fanno riferimenti ai due anbienti di lavoro che vengono presentati nel corso.
- Una prova orale successiva.
La prova di progetto (scritta) prevede l'assegnamento di un voto in 30esimi che dipende dal corretto svolgimento delle due parti dello stesso.
La prova orale si sostiene solo con esito positivo della prima prova e si svolge su tutti gli argomenti del corso, con l'obiettivo di verificare una corretta capacità di orientamento.
Il giudizio finale dopo la prova di progetto si basa sulla valutazione della prova orale, e può essere completato da altri elementi di valutazione (prove ulteriori e progetti facoltativi).
Strumenti a supporto della didattica
In aula si usano lucidi e discussioni di piccoli progetti.
Sito web del corso ad URL: lia.disi.unibo.it/Courses/RetiT
In laboratorio sono presenti strumenti di sviluppo e di supporto alla esecuzione dei progetti.
Gli studenti sono invitati a familiarizzare con questi o altri strumenti di uso personale.
Si suggeriscono strumenti in ambiente UNIX (Linux). La operatività e le capacità di realizzare piccoli progetti sono particolarmente importanti.
Orario di ricevimento
Consulta il sito web di Antonio Corradi
Consulta il sito web di Luca Foschini
SDGs
L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.