Conoscenza e capacità di comprensione (knowledge and understanding): verrano acquisite conoscenza e comprensione dei fondamenti concettuali (nozioni di base e architetturali, principali classi di problemi) su cui poggiano le soluzioni di impiego corrente per lo sviluppo dei sistemi distribuiti e, in particolare, delle applicazioni web lato server.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di impiegare soluzioni e paradigmi appresi nel corso, in modo da costituire un efficace bagaglio di competenze, necessarie per la progettazione di sistemi distribuiti e applicazioni Web lato server.
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare comparativamente i meriti e i limiti delle soluzioni di impiego corrente, nell'industria del software, per le problematiche e gli scenari tipici della progettazione distribuita e Web (lato server).
Abilità comunicative (communication skills): lo studente apprenderà terminologia e paradigmi specifici dei sistemi distribuiti e dello sviluppo Web lato server e acquisirà le abilità comunicative appropriate per esprimere e discutere, ad un livello tecnico rigoroso, le problematiche di interesse.
Capacità di apprendimento (learning skills): lo studente sarà in grado di documentarsi e approfondire le proprie conoscenze mediante la consultazione delle fonti disponibili (libri di testo e/o risorse on line), eventualmente applicando le informazioni acquisite in contesti concreti.
Conoscenza e capacità di comprensione (knowledge and understanding): verrano acquisite conoscenza e comprensione delle principali tecnologie per lo sviluppo di sistemi distribuiti e, in particolare, delle applicazioni web lato server.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di impiegare le tecnologie introdotte e sperimentate nel corso, in modo da acquisire capacità operative e progettuali nello sviluppo e gestione di sistemi distribuiti e applicazioni web (lato server).
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare comparativamente i vantaggi e i limiti delle principali tecnologie disponibili per sviluppo e gestione di sistemi distribuiti e web (lato server).
Abilità comunicative (communication skills): lo studente apprenderà la terminologia specifica dei sistemi distribuiti e web e acquisirà le abilità comunicative appropriate per esprimere e discutere, ad un livello tecnico rigoroso, le problematiche di interesse.
Capacità di apprendimento (learning skills): lo studente sarà in grado di utilizzare la documentazione tecnica delle soluzioni e tecnologie di uso corrente per i sistemi distribuiti e web, al fine di impiegarle concretamente nelle attività di amministrazione e sviluppo.
Lezioni frontali in aula
Sessioni di laboratorio con esercitazioni
Consigliata, per il raggiungimento di una piena comprensione del materiale presentato.
Fortemente consigliata, per il raggiungimento di una piena capacità operativa mediante le tecnologie presentate.
Verranno presentati, a livello di concetti, paradigmi e aspetti architetturali, i seguenti argomenti:
Verranno presentati, puntando a conferire agli allievi capacità operative e di sviluppo, i seguenti argomenti:
Tutto il materiale presentato a lezione verrà reso disponibile o accessibile (se trattasi di risorsa esterne) sul portale Studium.
Tutto il materiale presentato a lezione verrà reso disponibile o accessibile (se trattasi di risorsa esterne) attraverso il portale Studium.
TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB | ||
Argomenti | Riferimenti testi | |
1 | Introduzione ai sistemi concorrenti e distribuiti e al corso. | 1 |
2 | Socket: introduzione e system call principali. | 1 |
3 | Socket: Cliente di esempio. Semantica di read() e write(). Socket non bloccanti. | 1 |
4 | Socket: Indirizzi IP e delle socket. DNS e interfaccia la resolver. | 1 |
5 | Socket: Comunicazione connectionless. send() e receive(). | 1 |
6 | Socket in linguaggio Java. | 1,2,3 |
7 | Java: Remote Method Invocation | 2,3 |
8 | Remote Procedure Call in C | 1 |
9 | Java Servlet: concetti | 1,4 |
10 | Web Application: principi e concetti | 1,4 |
11 | Web services: SOAP | 1 |
12 | Web services: REST con JSON | 1 |
LABORATORIO | ||
Argomenti | Riferimenti testi | |
1 | Sviluppo di un server parallelo mediante socket | 1 |
2 | Sviluppo di un sistema client-server con protocollo applicativo mediante socket | 1 |
3 | Sviluppo di un sistema client-server con Remote Procedure Call RPC Sun | 1 |
4 | Impiego della socket API Java | 1,2,3 |
5 | Sviluppo di un sistema client-server con Remote Method Invocation RMI Java | 1,2,3 |
6 | Sviluppo di applicazioni multi-threaded in ambiente Linux | 1 |
7 | Sviluppo di applicazioni multi-threaded Java | 1,2,3 |
8 | Sviluppo di una Web Application | 1,4 |
9 | Le servlet Java | 1,2,4 |
10 | L'application server Apache Tomcat e il deployment delle Web App | 1,4 |
11 | Il backend (database) di una Web App: tecnologie Java | 1,2,4 |
12 | Sviluppo di Web App nell'ambiente IDE Netbeans | 1 |
13 | Sviluppo di Web App nell'ambiente IDE Eclipse | 1 |
14 | Sviluppo di Web Services SOAP | 1 |
15 | Sviluppo di Web Services REST e linguaggio di interscambio JSON | 1 |
16 | Sviluppo di thin client in linguaggio Python | 1 |
17 | Pattern MVC per lo sviluppo di Web App | 1 |
Discussione orale degli argomenti del corso a partire dalla correzione della prova di laboratorio.
Prove di laboratorio, consistenti nell'implementazione di codice che faccia ricorso alle tecnologie presentate nel corso (nel suo complesso).
Nello svolgimento delle prove di laboratorio, viene richiesto di realizzare semplici sistemi client-server che Impieghino le tecnologie presentate nel corso. Seguono alcuni esempi di prove d'esame già assegnate .