SISTEMI ORIENTATI AD INTERNET

Crediti: 
6
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Anno accademico di offerta: 
2017/2018
Semestre dell'insegnamento: 
Primo Semestre
Lingua di insegnamento: 

Italiano

Obiettivi formativi

Al termine del corso ci si attende che lo studente sia in grado di:
- conoscere i principi di funzionamento di Internet
- conoscere le principali tecnologie Web
- conoscere il linguaggio di programmazione JavaScript
- sviluppare pagine Web dinamiche
- sviluppare applicazioni Web
- conoscere i principi e le tecnologie delle architetture orientate ai servizi
- progettare e realizzare servizi Web
- conoscere i principi della progettazione e sviluppo di applicazioni Cloud
- progettare e realizzare applicazioni cloud
- conoscere architetture e protocolli dei sistemi peer-to-peer
- progettare e realizzare applicazioni di tipo peer-to-peer

Contenuti dell'insegnamento

1. Internet
2. Tecnologie Web di base
3. JavaScript
4. Architetture orientate ai servizi e applicazioni cloud
5. Sistemi peer-to-peer

Programma esteso

1. Internet (4 ore)
1.1. Periferia della rete
1.2. Centro della rete
1.3. Ritardo, perdita di pacchetti e throughput
1.4. Stack protocollare
1.5. Applicazioni di rete
1.6. Cenni storici

2. Tecnologie Web di base (8 ore)
2.1. HTTP
2.2. Apache HTTP Server
2.3. HTML, CSS, XML e JSON
2.4. Motori di Ricerca
2.5. MVC

3. JavaScript (14 ore)
3.1. JavaScript lato client (basi del linguaggio, window object, DOM, eventi, AJAX, JQuery, storage, scripted graphics, tool di sviluppo, WebRTC)
3.2. JavaScript lato server (Node.js)

4. Architetture orientate ai servizi e applicazioni cloud (8 ore)
4.1. Concetti generali sulle SOA
4.2. Web Services, SOAP, WSDL, UDDI, WS-Security, Semantic WS, WS-Composition
4.3. REST, servizi RESTful
4.4. OpenStack, sviluppo di applicazioni cloud

5. Sistemi peer-to-peer (8 ore)
5.1. Caratterizzazione qualitativa e quantitativa dei sistemi P2P
5.2. Problematiche di progettazione dei sistemi P2P
5.3. Modelli HM, DUM, DSM e LM
5.4. Sistemi peer-to-peer di tipo HM: SoulSeek, Napster, eMule, BitTorrent
5.5. Sistemi peer-to-peer di tipo DUM: Gnutella, Mute, Freenet
5.6. Sistemi peer-to-peer di tipo DSM: Kademlia, Chord
5.7. Sistemi peer-to-peer di tipo LM: Skype
5.8. Blockchain e Bitcoin

Bibliografia

M. Amoretti, dispense in inglese sugli argomenti del corso.
J. Kurose, K. Ross, "Computer Networking: A Top Down Approach", ed. Addison-Wesley, 2012.
D. Flanagan, "JavaScript - The Definitive Guide", ed. O’Reilly, 2011.
M. Cantelon, M. Harter, T. J. Holowaychuck, N. Rajlich, "Node.js in action", ed. Manning, 2014.

Metodi didattici

Le attività didattiche saranno condotte privilegiando lezioni frontali in cui il docente spiega gli argomenti mostrando delle slide e scrivendo sulla lavagna.
Alcune ore saranno dedicate ad esercitazioni pratiche sullo sviluppo di software per i sistemi orientati ad Internet.
Il materiale didattico (comprendente slide, dispense, codice sorgente, articoli scientifici) verrà caricato con cadenza settimanale sulla piattaforma Elly.
Per scaricare il materiale didattico è necessaria l’iscrizione al corso on line.
Si ricorda agli studenti non frequentanti di controllare il materiale didattico disponibile e le indicazioni fornite dal docente tramite la piattaforma Elly.

Modalità verifica apprendimento

La valutazione degli apprendimenti prevede due momenti:
1) una prova scritta della durata di 2 ore, articolata su domande aperte relative agli argomenti teorici del corso;
2) un progetto di sviluppo software basato sulle tecnologie illustrate durante il corso; è prevista la stesura di una breve relazione e la presentazione orale del lavoro svolto.
La prova scritta è valutata con scala 0-30. Il progetto è valutato con scala 0-30. I due punteggi vengono mediati a formare il voto finale, con peso 0.4 per la prova scritta e 0.6 per il progetto.
Non sono previste prove in itinere.