TECNOLOGIE INTERNET

Docenti: 
AMORETTI Michele
Crediti: 
9
Sede: 
PARMA
Anno accademico di offerta: 
2021/2022
Responsabile della didattica: 
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Semestre dell'insegnamento: 
Primo Semestre
Anno di corso: 
3

Obiettivi formativi

Conoscenze e capacità di comprendere - Mediante le lezioni frontali tenute durante il corso, lo studente apprenderà le principali tecnologie Web e il linguaggio di programmazione JavaScript. Lo studente apprenderà inoltre i principi e le tecnologie delle architetture orientate ai servizi. Lo studente acquisirà competenze sulle principali architetture e protocolli dei sistemi peer-to-peer e blockchain. Infine, lo studente apprenderà le basi della crittografia e dei protocolli per la comunicazione sicura.
Capacità di applicare conoscenza e comprensione - Mediante le lezioni frontali e le esercitazioni pratiche svolte in classe relativamente ad alcuni argomenti del programma, lo studente apprenderà come applicare le conoscenze acquisite in un contesto reale di progettazione. In particolare, lo studente imparerà a: sviluppare pagine Web dinamiche, sviluppare applicazioni Web, progettare e realizzare servizi Web, progettare e realizzare applicazioni di tipo peer-to-peer, con attenzione alle problematiche legate alla sicurezza.
Autonomia di giudizio - Lo studente dovrà essere in grado di comprendere e valutare in maniera critica le principali tecnologie legate al mondo di Internet.
Capacità comunicative - Tramite le lezioni frontali e il confronto con il docente, lo studente acquisirà il lessico specifico delle tecnologie Internet. Ci si attende che, al termine del corso, lo studente sia in grado di trasmettere, in forma orale e in forma scritta, i principali contenuti del corso, quali idee, problematiche ingegneristiche e relative soluzioni.
Capacità di apprendimento - Lo studente che abbia frequentato il corso sarà in grado di approfondire le proprie conoscenze in materia di tecnologie Internet attraverso la consultazione autonoma di testi specialistici, riviste scientifiche o divulgative, anche al di fuori degli argomenti trattati strettamente a lezione, al fine di affrontare efficacemente l’inserimento nel mondo del lavoro o intraprendere percorsi di formazione successivi.

Contenuti dell'insegnamento

1. Tecnologie Web
2. Architetture orientate ai servizi
3. Sistemi peer-to-peer
4. Blockchain
5. Cybersecurity

Programma esteso

1. Tecnologie Web (28 ore) - HTTP; Apache HTTP Server; HTML; CSS; XML; JSON; Motori di Ricerca; JavaScript: basi del linguaggio, window object, DOM, eventi, AJAX, JQuery, storage, scripted graphics, tool di sviluppo; Node.
2. Architetture orientate ai servizi (6 ore) - Concetti generali sulle SOA; Web Services; servizi RESTful; microservizi.
3. Sistemi peer-to-peer (8 ore) - Caratterizzazione qualitativa e quantitativa dei sistemi P2P; Problematiche di progettazione dei sistemi P2P; Modelli HM, DUM, DSM e LM; Sistemi peer-to-peer di tipo HM: SoulSeek, Napster, eMule, BitTorrent; Sistemi peer-to-peer di tipo DUM: Gnutella, Mute, Freenet; Sistemi peer-to-peer di tipo DSM: Kademlia, Chord; Sistemi peer-to-peer di tipo LM: Skype; WebRTC e PeerJS.
4. Blockchain (8 ore) – Principi generali delle blockchain; Transazioni; Bitcoin; Smart Contract; Erthereum; Modelli di consenso: Proof of Work e Proof of Stake; Ouroboros, Ouroboros Praos e Cardano; Algorand; Tipologie di attacchi informatici alle blockchain.
5. Cybersecurity (22 ore) - Concetti generali di sicurezza informatica; Crittografia a chiave simmetrica; Funzioni di hash crittografiche; MAC; Crittografia a chiave pubblica; Firme digitali; Distribuzione di chiavi crittografiche; Autenticazione utente; TLS e HTTPS.

Bibliografia

M. Amoretti, dispense in inglese sugli argomenti del corso.
J. Kurose, K. Ross, "Computer Networking: A Top Down Approach", ed. Addison-Wesley, 2016.
D. Flanagan, "JavaScript - The Definitive Guide", ed. O’Reilly, 2020.
W. Stallings, "Cryptography and Network Security: Principles and Practice", 7th edition, 2017.

Metodi didattici

Le lezioni si svolgeranno in presenza.
Il docente spiegherà gli argomenti mostrando delle slide.
Alcune ore saranno dedicate ad esercitazioni pratiche sullo sviluppo di software.
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 online.
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 dell’apprendimento prevede tre momenti:
1) una prova scritta della durata di 2 ore, articolata su domande aperte relative agli argomenti teorici del corso, esclusa la parte di cybersecurity;
2) una prova scritta della durata di 1 ora, articolata su domande aperte relative alla parte di cybersecurity;
3) un progetto di sviluppo software basato sulle tecnologie illustrate durante le lezioni frontali; è prevista la stesura di una breve relazione e la presentazione orale del lavoro svolto.
Ciascuna prova scritta è valutata con scala 0-30. Il progetto è valutato con scala 0-30. I tre punteggi vengono mediati a formare il voto finale.
E’ prevista una prova scritta in itinere equivalente al momento 2) della valutazione dell’apprendimento, quindi relativa alla parte di cybersecurity. Lo studente che ottiene almeno 18 punti nella prova in itinere è esentato dal momento 2) della valutazione dell’apprendimento.