TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB CON LABORATORIO

Anno accademico 2017/2018 - 3° anno - Curriculum B
Docenti Crediti: 9
SSD: INF/01 - Informatica
Organizzazione didattica: 225 ore d'impegno totale, 141 di studio individuale, 48 di lezione frontale, 36 di laboratorio
Semestre:

Obiettivi formativi

  • TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB

    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.


Prerequisiti richiesti

  • TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
    • Capacità di pensare in termini algoritmici (corso di Programmazione)
    • Conoscenza di problematiche e soluzioni della programmazione concorrente (trattata nel corso di Sistemi Operativi)
    • Conoscenza dei principali concetti, meccanismi e protocolli della rete Internet (corso di Reti di calcolatori)

Frequenza lezioni

  • TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB

    Consigliata, per il raggiungimento di una piena comprensione del materiale presentato.


Contenuti del corso

  • TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB

    Verranno presentati, a livello di concetti, paradigmi e aspetti architetturali, i seguenti argomenti:

    • Applicazioni client-server basate su socket
    • Applicazioni client-server basate su invocazioni remote di codice
    • Thread Linux in C
    • Thread Java
    • Servlet e web application
    • Web services SOAP e REST

Testi di riferimento


Programmazione del corso

TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
 ArgomentiRiferimenti testi
1Introduzione ai sistemi concorrenti e distribuiti e al corso.
2Socket: introduzione e system call principali.
3Socket: Cliente di esempio. Semantica di read() e write(). Socket non bloccanti.
4Socket: Indirizzi IP e delle socket. DNS e interfaccia la resolver.
5Socket: Comunicazione connectionless. send() e receive().
6Socket in linguaggio Java.1,2,3 
7Java: Remote Method Invocation2,3 
8Remote Procedure Call in C
9Java Servlet: concetti1,4 
10Web Application: principi e concetti1,4 
11Web services: SOAP
12Web services: REST con JSON

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB

    Discussione orale degli argomenti del corso a partire dalla correzione della prova di laboratorio.


Esempi di domande e/o esercizi frequenti

  • TECNOLOGIE PER I SISTEMI DISTRIBUITI E IL WEB
    • Sviluppo di sistemi client-server mediante socket.
    • Uso dei thread Posix.
    • Architettura 3-tier per un sistema distribuito.
    • Sviluppo di applicazioni Web server-side, mediante servlet.
    • Impiego di ambienti integrati di sviluppo.
    • Servlet e servlet container
    • Web application
    • Costruzione e utilizzo di web services SOAP e REST.
    • Formato di interscambio JSON.