| | | corso | | | | |
Laboratorio di programmazione di rete B
(Corso di Laurea in Informatica (classe 26))
Codice: | AA018 | Crediti: | 6 | Semestre: | 1 | Sigla: | LPR | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Andrea Corradini
Tel. 0502212786Prerequisiti
Laboratori del primo e secondo anno, conoscenza del linguaggio di
programmazione Java.
Obiettivi di apprendimento
Il laboratorio si pone l'obiettivo di fornire le conoscenze di base necessarie per la progettazione e realizzazione di (semplici) applicazioni di rete (applicazioni client-server, applicazioni peer-to-peer). Il laboratorio pone una enfasi particolare nella sperimentazione di paradigmi per la programmazione di applicazioni di rete.
Conoscenze.
Lo studente al termine del laboratorio avrà acquisito familiarità con le tecniche di base per programmare applicazioni di rete sia tradizionali (client-server) che innovative (peer-to-peer) in termini di comunicazione via socket (socket TCP, socket UDP e Multicast) e programmazione con oggetti remoti.
Capacità.
Lo studente al termine del laboratorio sarà grado di utilizzare gli strumenti e le tecnologie di base (socket e oggetti remoti) per la realizzazione e il testing di applicazioni di rete non banali.
Comportamenti.
Lo studente al termine del laboratorio avrà acquisito un livello di autonomia che permetta di valutare le tipologie differenti di applicazioni di rete e le tecnologie necessarie per la loro progettazione e realizzazione. Sarà inoltre cosciente delle problematiche inerenti al testing di applicazioni di rete in contesti operativi.
Descrizione
Il corso fornisce le conoscenze di base necessarie per lo sviluppo di (semplici) applicazioni di rete (WEB, trasferimento file, posta elettronica, chat, etc.).
In particolare, fornisce tutte le basi necessarie al corretto utilizzo dei thread in Java i dei socket (indirizzi, socket TCP e UDP, modello orientato alla connessione e senza connessione, comunicazioni punto a punto e multicast/broadcast, modello client/server). Inoltre, verranno presentate le caratteristiche base di meccanismi a più alto livello (RMI/CORBA/RPC) e verranno svolti esercizi utilizzando il meccanismo RMI, primitivo in Java.
English Description
The course aims at providing the basic knonwledge necessary to develop
(simple) network applications (WEB, file transfer, email, chat,
etc.).
In particular, the knowledge necessary to use Java threads and sockets
(addresses, TCP and UDP sockets, connection-oriented and
connectionless models, point to point and multicast/broadcast
communications, client/server model) will be provided.
Furthermore, the basic features of higher level programming models
(RMI/CORBA/RPC) will be discussed; exercises will be proposed that use
the primitive RMI Java mechanism.
Indicazioni metodologiche
Per conseguire gli obiettivi indicati, è necessario:
- organizzare il processo di apprendimento in moduli flessibili, posti in sequenza logica;
- presentare in modo approfondito i diversi paradigmi di programmazione
- presentare in modo approfondito i diversi meccanismi di programmazione
- evidenziare i limiti delle tecniche presentate in modo da favorire il formarsi di una capacità critica nello studente;
- coordinarsi con i docenti dei corsi indicati nei prerequisiti e dei corsi paralleli del semestre;
- proporre l’analisi di casi di studio tratti da esperienze reali riportate in letteratura;
- separare gli aspetti e le scelte puramente tecnologiche da quelle funzionali alla soluzione di un problema di natura applicativa.
Programma
Il corso si pone l’obiettivo di fornire le conoscenze necessarie per la scrittura di programmi distribuiti tramite l'utilizzo di socket (indirizzi, URL, socket TCP e UDP, modelli connection- oriented e connectionless, comunicazioni punto a punto, multicast e broadcast, modello client/server). Saranno inoltre presentate le caratteristiche base di modelli di programmazione distribuita più ad alto livello, come RMI, CORBA ed RPC. In particolare, verranno svolti esercizi utilizzando Java RMI.
Parte prima: multithreading e socket
- Programmazione concorrente in Java con thread.
- Modello client/server, server seriali e concorrenti.
- Socket (lato cliente e lato servente) con TCP con indirizzi visti
come coppie (nomehost, numeroporta).
- Accesso a servizi standard.
- Realizzazione di semplici server concorrenti e non.
- Indirizzi Inet.
- UDP.
- Accesso a servizi standard.
- Port scanning.
- Utilizzo di multicast.
- Implementazione di livelli diversi di affidabilità sopra UDP.
Parte seconda: RMI.
- RMI.
- Relazioni con CORBA/RPC.
- Utilizzo di RMI per la realizzazione di semplici servizi di rete.
Parte terza: Progetto.
- Assegnazione e discussione in aula del progetto conclusivo del corso.
| Ore esercitazione: | 24 | Ore laboratorio: | 24 | | |
Bibliografia
Harold, JAVA Network Programming, Third edition (O'Reilly), 2004
(http://oreilly.com/catalog/9780596007218/)
Hughes et al. JAVA Network Programming 2nd edition (Manning). 2001
Dispense e note didattiche distribuite dal docente (prevalentemente mediante pubblicazione sulla pagina WEB del corso).
Modalità di esame
Realizzazione e discussione di un progetto di programmazione. Il progetto di programmazione è un caso di studio derivato da casi di studio e/o applicazioni reali.