ID:
133555
Tipo Insegnamento:
Obbligatorio
Durata (ore):
64
CFU:
8
SSD:
INFORMATICA
Url:
INFORMATICA/Percorso Comune Anno: 3
Anno:
2024
Dati Generali
Periodo di attività
Primo Semestre (19/09/2024 - 17/12/2024)
Syllabus
Obiettivi Formativi
L’obiettivo del corso è quello di fornire agli studenti una chiara visione dell'architettura della rete Internet e dei modelli e tecnologie per lo sviluppo di servizi IT. Al termine del corso gli studenti dovranno essere in grado di sviluppare applicazioni distribuite secondo il modello Client/Server, utilizzando gli strumenti Unix e Java per la programmazione di rete.
Le principali conoscenze acquisite saranno:
- modello Client/Server;
- architettura dei principali protocolli e servizi Internet;
- modelli di programmazione di rete (socket, RPC, ecc.);
- principali problematiche di sicurezza nelle reti di calcolatori.
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
- identificare i vincoli di progetto per protocolli e sistemi Internet;
- saper realizzare applicazioni distribuite Client/Server utilizzando le Socket in ambienti Unix/C e Java.
Le principali conoscenze acquisite saranno:
- modello Client/Server;
- architettura dei principali protocolli e servizi Internet;
- modelli di programmazione di rete (socket, RPC, ecc.);
- principali problematiche di sicurezza nelle reti di calcolatori.
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
- identificare i vincoli di progetto per protocolli e sistemi Internet;
- saper realizzare applicazioni distribuite Client/Server utilizzando le Socket in ambienti Unix/C e Java.
Prerequisiti
Il corso richiede la conoscenza approfondita dei linguaggi C e Java e del sistema operativo Unix. Quindi si assume (ma non è «formalmente» obbligatorio) che siano stati superati gli esami di Fondamenti di Informatica (entrambi i moduli) per la L-8, Programmazione e laboratorio per la L-31, e Sistemi Operativi.
Metodi didattici
Il corso è organizzato nel seguente modo:
-lezioni frontali in aula su tutti gli argomenti del corso;
-esercitazioni nei Laboratori di Informatica INFO1 e INFO2 per il progetto e lo sviluppo di semplici applicazioni distribuite Client/Server utilizzando le Socket in ambienti Unix/C e Java.
Al termine delle esercitazioni guidate gli studenti avranno libero accesso al laboratorio per ulteriori esercitazioni individuali.
Le lezioni dell'insegnamento sono esplicitamente pensate per essere fruite in presenza, e hanno natura interattiva. Esclusivamente come supporto allo studio, sarà resa disponibile una versione registrata (possibilmente effettuata nelle edizioni precedenti dell'insegnamento) delle lezioni frontali (escluse quindi le esercitazioni di laboratorio) nel minisito Google Classroom dell'insegnamento (codice c25muci).
-lezioni frontali in aula su tutti gli argomenti del corso;
-esercitazioni nei Laboratori di Informatica INFO1 e INFO2 per il progetto e lo sviluppo di semplici applicazioni distribuite Client/Server utilizzando le Socket in ambienti Unix/C e Java.
Al termine delle esercitazioni guidate gli studenti avranno libero accesso al laboratorio per ulteriori esercitazioni individuali.
Le lezioni dell'insegnamento sono esplicitamente pensate per essere fruite in presenza, e hanno natura interattiva. Esclusivamente come supporto allo studio, sarà resa disponibile una versione registrata (possibilmente effettuata nelle edizioni precedenti dell'insegnamento) delle lezioni frontali (escluse quindi le esercitazioni di laboratorio) nel minisito Google Classroom dell'insegnamento (codice c25muci).
Verifica Apprendimento
L'esame è costituito da una prova scritta e da una prova orale, che possono essere sostenute anche in appelli differenti. Il superamento dell'esame è prova di aver acquisito le conoscenze e le abilità specificate negli obiettivi formativi dell'insegnamento.
Nella prova scritta sarà richiesto di progettare un'applicazione distribuita Client/Server utilizzando sia le Socket Unix che le Socket Java. La prova scritta sarà svolta all'elaboratore, in uno dei laboratori informatici del Polo Scientifico-Tecnologico. Alla prova scritta verrà assegnato un voto da 18 a 30 (voti al di sotto del 18 sono considerati insufficienti). Se non si è soddisfatti del risultato di una prova scritta, si può partecipare a un qualunque appello successivo, svolgere la prova e decidere se consegnare o meno l'elaborato. Ovviamente, nel caso di consegna si cancella il risultato conseguito nello scritto precedente.
Dopo il superamento della prova scritta si deve sostenere la prova orale, per verificare la preparazione anche sulle parti del corso non interessate dalla prova scritta. La prova orale porterà ad arrotondare il voto preso nella prova scritta di circa 3 punti al massimo. Se non si è soddisfatti della prova orale, si può decidere di sostenerla nuovamente senza perdere il voto conseguito allo scritto.
Il docente fisserà 6 appelli scritti ogni anno (solare), che si terranno nei mesi di gennaio, febbraio, giugno, luglio, settembre e dicembre. Si prevedono appelli orali con frequenza circa bisettimanale. Per non interferire con le lezioni, durante i periodi di lezione saranno disponibili appelli orali riservati ai soli studenti fuori corso.
Nella prova scritta sarà richiesto di progettare un'applicazione distribuita Client/Server utilizzando sia le Socket Unix che le Socket Java. La prova scritta sarà svolta all'elaboratore, in uno dei laboratori informatici del Polo Scientifico-Tecnologico. Alla prova scritta verrà assegnato un voto da 18 a 30 (voti al di sotto del 18 sono considerati insufficienti). Se non si è soddisfatti del risultato di una prova scritta, si può partecipare a un qualunque appello successivo, svolgere la prova e decidere se consegnare o meno l'elaborato. Ovviamente, nel caso di consegna si cancella il risultato conseguito nello scritto precedente.
Dopo il superamento della prova scritta si deve sostenere la prova orale, per verificare la preparazione anche sulle parti del corso non interessate dalla prova scritta. La prova orale porterà ad arrotondare il voto preso nella prova scritta di circa 3 punti al massimo. Se non si è soddisfatti della prova orale, si può decidere di sostenerla nuovamente senza perdere il voto conseguito allo scritto.
Il docente fisserà 6 appelli scritti ogni anno (solare), che si terranno nei mesi di gennaio, febbraio, giugno, luglio, settembre e dicembre. Si prevedono appelli orali con frequenza circa bisettimanale. Per non interferire con le lezioni, durante i periodi di lezione saranno disponibili appelli orali riservati ai soli studenti fuori corso.
Testi
Non esiste un unico libro di testo che contenga tutto il materiale presentato a lezione. Il docente propone quindi un elenco di libri, suddivisi tra libri di carattere più introduttivo/generale e libri che coprono con maggiore dettaglio alcuni specifici argomenti del corso.
Il testo che fornisce la più ampia copertura della maggior parte degli argomenti del corso, seguendo la stessa impostazione, è il Kurose-Ross:
J. Kurose, K. Ross, "Reti di Calcolatori - Un approccio top-down a Internet ", Pearson Education Italia, 8a edizione, 2022.
Il Kurose-Ross è da molti considerato il testo di riferimento del settore e fornisce una trattazione un po' più teorica e sicuramente più ampia degli argomenti rispetto ad altri testi.
Un altro testo con ampia copertura degli argomenti del corso, ma con una diversa impostazione è:
A.S. Tanenbaum, D. Wetherall, "Reti di calcolatori", 6a edizione, Pearson Education Italia, 2023.
Il Tanenbaum-Wetherall rappresenta un ottimo riferimento per approfondire alcuni argomenti specifici, ma l'approccio bottom-up adottato lo rende decisamente meno adatto ai fini di questo corso rispetto al Kurose-Ross.
Altri testi con trattazione più approfondita di alcuni argomenti (indicati tra parentesi):
E. Harold, "Java Network Programming", 4th Edition, O'Reilly, 2013 (Socket Java)
M. Kerrisk, "The Linux Programming Interface", No Starch Press, 2010 (Unix)
W.R. Stevens et al., "Advanced Programming in the UNIX Environment", 3rd Edition, Addison-Wesley, 2013 (Unix)
W.R. Stevens et al., "Unix Network Programming - Vol.1", 3rd Edition, Addison-Wesley, 2003 (Socket Unix)
W.R. Stevens et al., "TCP/IP Illustrated: the protocols - Vol.1", 2nd Edition, Addison-Wesley, 2012 (TCP/IP)
W. Stallings, L. Brown, "Computer Security: Principles and Practice", 2nd Edition, Prentice Hall, 2011 (Security)
J. Forshaw, "Attacking Network Protocols", No Starch Press, 2017 (Security and protocol analysis)
C. Sanders, "Practical Packet Analysis", 3rd Edition, No Starch Press, 2017 (Protocol analysis and debugging)
R. Seacord, "Effective C", No Starch Press, 2020 (Modern C)
Il testo che fornisce la più ampia copertura della maggior parte degli argomenti del corso, seguendo la stessa impostazione, è il Kurose-Ross:
J. Kurose, K. Ross, "Reti di Calcolatori - Un approccio top-down a Internet ", Pearson Education Italia, 8a edizione, 2022.
Il Kurose-Ross è da molti considerato il testo di riferimento del settore e fornisce una trattazione un po' più teorica e sicuramente più ampia degli argomenti rispetto ad altri testi.
Un altro testo con ampia copertura degli argomenti del corso, ma con una diversa impostazione è:
A.S. Tanenbaum, D. Wetherall, "Reti di calcolatori", 6a edizione, Pearson Education Italia, 2023.
Il Tanenbaum-Wetherall rappresenta un ottimo riferimento per approfondire alcuni argomenti specifici, ma l'approccio bottom-up adottato lo rende decisamente meno adatto ai fini di questo corso rispetto al Kurose-Ross.
Altri testi con trattazione più approfondita di alcuni argomenti (indicati tra parentesi):
E. Harold, "Java Network Programming", 4th Edition, O'Reilly, 2013 (Socket Java)
M. Kerrisk, "The Linux Programming Interface", No Starch Press, 2010 (Unix)
W.R. Stevens et al., "Advanced Programming in the UNIX Environment", 3rd Edition, Addison-Wesley, 2013 (Unix)
W.R. Stevens et al., "Unix Network Programming - Vol.1", 3rd Edition, Addison-Wesley, 2003 (Socket Unix)
W.R. Stevens et al., "TCP/IP Illustrated: the protocols - Vol.1", 2nd Edition, Addison-Wesley, 2012 (TCP/IP)
W. Stallings, L. Brown, "Computer Security: Principles and Practice", 2nd Edition, Prentice Hall, 2011 (Security)
J. Forshaw, "Attacking Network Protocols", No Starch Press, 2017 (Security and protocol analysis)
C. Sanders, "Practical Packet Analysis", 3rd Edition, No Starch Press, 2017 (Protocol analysis and debugging)
R. Seacord, "Effective C", No Starch Press, 2020 (Modern C)
Contenuti
Il corso prevede 60 ore di didattica tra lezioni ed esercitazioni, più 4 ore di approfondimenti. In particolare sono previste 45 ore di lezione in aula e 15 ore di esercitazioni guidate in laboratorio.
Gli argomenti affrontati durante il corso sono:
- Introduzione alle reti di calcolatori e ai sistemi distribuiti
- Inter Process Communication per applicazioni distribuite
- Il modello Client/Server
- Naming e binding
- Le Socket in Java e in Unix - sviluppo di sistemi Client/Server
- Strumenti per il testing e il debug di applicazioni distribuite
- Gestione dell’eterogeneità nei sistemi distribuiti
- Modelli architetturali per la realizzazione di Server
- Remote Procedure Call (RPC)
- I servizi Internet e loro realizzazione (telnet, FTP, e-mail, etc.)
- Sistemi Web, servizi, linguaggi e protocolli
- Il problema della sicurezza in Internet
- Oltre il modello Client/Server
Gli argomenti affrontati durante il corso sono:
- Introduzione alle reti di calcolatori e ai sistemi distribuiti
- Inter Process Communication per applicazioni distribuite
- Il modello Client/Server
- Naming e binding
- Le Socket in Java e in Unix - sviluppo di sistemi Client/Server
- Strumenti per il testing e il debug di applicazioni distribuite
- Gestione dell’eterogeneità nei sistemi distribuiti
- Modelli architetturali per la realizzazione di Server
- Remote Procedure Call (RPC)
- I servizi Internet e loro realizzazione (telnet, FTP, e-mail, etc.)
- Sistemi Web, servizi, linguaggi e protocolli
- Il problema della sicurezza in Internet
- Oltre il modello Client/Server
Lingua Insegnamento
ITALIANO
Corsi
Corsi
INFORMATICA
Laurea
3 anni
No Results Found
Persone
Persone
No Results Found