Applicazioni web e cloud

A.A. 2020/2021
6
Crediti massimi
64
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento ha lo scopo di introdurre i concetti fondamentali riguardanti il design e lo sviluppo di applicazioni web e cloud, illustrando i principi di funzionamento, i modelli di servizio e le tecnologie alla base della programmazione web e del paradigma cloud computing.
Risultati apprendimento attesi
Al termine dell'insegnamento lo studente dovrà conoscere i concetti fondamentali della programmazione web e i principi di funzionamento del paradigma cloud computing. Inoltre, attraverso prove di laboratorio, lo studente dovrà essere in grado di progettare e sviluppare applicazioni web e cloud mostrando una buona padronanza delle metodologie e tecnologie apprese durante l'insegnamento.
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Edizione unica

Periodo
Primo semestre
METODI DIDATTICI
Le lezioni si terranno sulla piattaforma Microsoft Teams e potranno essere seguite sia in sincrono sulla base dell'orario del primo trimestre sia in asincrono perché saranno registrate e lasciate a disposizione degli studenti sulla medesima piattaforma.

PROGRAMMA E MATERIALE DI RIFERIMENTO
Il programma e il materiale di riferimento non subiranno variazioni.

MODALITA' DI VERIFICA DELL'APPRENDIMENTO E CRITERI DI VALUTAZIONE
L'esame si svolgerà nella tradizionale forma scritto più orale con progetto.

L'esame scritto (2 ore) verrà svolto in videoconferenza tramite le tecnologie EXAM.NET + SEB + Zoom. Per partecipare all'esame sarà necessario possedere due device: il primo (ad esempio, un computer portatile) per compilare l'esame, il secondo uno smartphone con webcam (in alternativa la webcam del computer portatile) e microfono per la sorveglianza.

Per quanto riguarda l'esame orale con discussione del progetto, laddove la regolamentazione lo consentisse, verranno mantenute le medesime modalità in presenza. In caso contrario, verrà utilizzata la piattaforma Microsoft Teams o, in alternativa, Zoom.

I criteri di valutazione rimarranno invariati.

Programma
L'insegnamento ha come primo obiettivo l'analisi dei concetti fondamentali e tecnologie alla base del design e dello sviluppo di applicazioni web. L'insegnamento discuterà successivamente i concetti fondamentali, i principi di funzionamento, i modelli di servizio, i modelli di deployment e le tecnologie alla base del cloud computing.
Per la realizzazione degli obiettivi sopra enunciati, sono previste lezioni frontali (32 ore - 4 cfu) e lezioni in laboratorio con esercitazioni pratiche (32 ore - 2 cfu).

In particolare, la parte teorica si compose di due moduli principali.

Nel primo modulo dell'insegnamento verrà posto l'accento sui concetti fondamentali e alcune tecnologie alla base del design e dello sviluppo di applicazioni web e cloud.
1. Pre-concetti. URL, HTTP, HTML, CSS.
2. Javascript, HTML5, CSS3, servizi REST.
3. Panoramica di framework e linguaggi avanzati per lo sviluppo web.

Nella seconda parte dell'insegnamento verranno presentate le caratteristiche principali, i modelli di servizio e le tecnologie alla base del funzionamento del cloud computing.
1. Tecnologie per la virtualizzazione. Tassonomia di virtualizzazione. Hypervisor. Costi della virtualizzazione. La suite VMware.
2. Cloud Computing. Predecessori del Cloud computing. Requisiti e caratteristiche. Modelli di servizio. Modelli di deployment. Migrazione verso la cloud. Costi del cloud computing (Cloudonomics). Problematiche del cloud computing.
3. IaaS, PaaS, SaaS: Definizioni. Tecnologie. Casi di studio.

La parte pratica in laboratorio approfondirà i concetti discussi nella parte teorica attraverso esercizi e prove pratiche in laboratorio con particolare riferimento allo sviluppo di applicazioni web e cloud.
Prerequisiti
Conoscenza dei concetti base delle architetture dei calcolatori e fondamenti di programmazione.
Metodi didattici
La parte di teoria viene svolta mediante lezioni frontali. La parte di laboratorio consta di esercitazioni e attività pratiche.
Materiale di riferimento
Dispense e slide disponibili alla pagina web dell'insegnamento (http://cardagnaawc.ariel.ctu.unimi.it/v5/home/Default.aspx)

HTML5 e CSS3
- G. Gigliotti, HTML5 e CSS3, Apogeo
- in alternativa HTML5 digital classroom, Osborn, Jeremy, 2011

CLOUD
- L. Badger, T. Grance, R. Patt-Corne, J. Voas, Cloud Computing Synopsis and Recommendations, NIST, http://csrc.nist.gov/publications/nistpubs/800-146/sp800-146.pdf
- B. Sosinsky, Cloud Computing Bible, 2011

REST services
- R.T. Fielding, Architectural Styles and the Design of Network-based Software Architectures, https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
- L. Richardson and S. Ruby, RESTful Web Services, http://www.crummy.com/writing/RESTful-Web-Services/
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste in una prova scritta, un progetto e una prova orale, tutte obbligatorie. La prova scritta, della durata di due ore, punta ad accertare, tramite una serie di domande a risposta aperta e chiusa, le conoscenze dello studente su tutti gli argomenti trattati nell'insegnamento. Il progetto mira ad approfondire gli aspetti pratici di uno degli argomenti trattati nell'insegnamento. La discussione orale si concentra sugli argomenti affrontati nello sviluppo del progetto e mira a valutarne la qualità. Una volta superate tutte le prove, viene formulata la valutazione complessiva, espressa in trentesimi, tenendo conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di un progetto concreto, qualità del progetto sviluppato, capacità di ragionamento critico, chiarezza espositiva e proprietà di linguaggio.
INF/01 - INFORMATICA - CFU: 6
Laboratori: 32 ore
Lezioni: 32 ore
Docente/i
Ricevimento:
Su appuntamento
Ufficio docente presso il Dipartimento di Informatica in Via Celoria 18, Milano (MI)
Ricevimento:
su appuntamento
stanza 7008