CLOUD E MOBILE COMPUTING

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2020/2021
Docente
CARLO GIANNELLI
Crediti formativi
6
Periodo didattico
Secondo Semestre
SSD
ING-INF/05

Obiettivi formativi

L'insegnamento ha l'obiettivo di introdurre lo studente alle principali tematiche relative al progetto e alla realizzazione di applicazioni distribuite in ambito Cloud e Mobile Computing. tramite l’uso di architetture e tecniche allo stato dell’arte, con particolare riferimento a soluzioni fortemente scalabili e modulari, che siano anche facilmente integrabili con applicazioni e servizi mobili che sfruttano informazioni di contesto per abilitare servizi avanzati.

Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) dello studente al termine dell'insegnamento saranno:
- in base ai requisiti, identificare opportunamente architetture distribuite e strumenti di virtualizzazione per applicazioni Cloud;
- analizzare i requisiti prestazionali e valutare le performance delle applicazioni Cloud;
- realizzare soluzioni mobili e Cloud utilizzando piattaforme di sviluppo e componenti software open source;
- integrare opportunamente servizi Cloud e applicazioni mobili.

Prerequisiti

Il corso richiede la conoscenza approfondita dei linguaggi di programmazione, sia imperativi (C) che a oggetti (ad esempio Python e Java) e del sistema operativo Unix. Inoltre è fortemente consigliato avere nozioni generali sui sistemi distribuiti.

Contenuti del corso

- Introduzione al Cloud Computing
- Tecnologie di virtualizzazione: dalle virtual machine ai container
- Monitoraggio e controllo di servizi Cloud
- Availability e reliability: clustering, replicazione, cache distribuita
- Introduzione ai microservice e al modello serverless
- Docker e Kubernetes
- Piattaforme pubbliche e private
- Evoluzioni del Cloud Computing: Edge e Fog Computing
- Architetture e modelli di riferimento per app mobile
- Modelli di programmazione per app mobile (nativa, ibrida, Web)
- Principali piattaforme di sviluppo per app mobile, in particolare Android
- Sistemi e tecniche di mobile positioning

Metodi didattici

Il corso è organizzato nel seguente modo:
- lezioni frontali in aula su tutti gli argomenti del corso;
- esercitazioni nel Laboratorio di Informatica Grande del Dipartimento di Ingegneria per il progetto e lo sviluppo di semplici applicazioni Cloud e mobile.

Al termine delle esercitazioni guidate gli studenti avranno libero accesso al laboratorio per ulteriori esercitazioni individuali.

Modalità di verifica dell'apprendimento

Il corso prevede una prova finale orale che cercherà di valutare il livello di apprendimento raggiunto sia in termini di metodologie di progettazione architetturale e modelli, sia in termini di operatività implementativa in relazione alle principali tecnologie descritte e utilizzate nel corso. La prova orale prevederà almeno quattro domande, in parte dedicate alla risoluzione di esercizi concreti di utilizzo dei meccanismi, protocolli e tecnologie per servizi Cloud e sistemi mobili investigati durante il corso.

Opzionalmente, gli studenti potranno svolgere un'attività progettuale tramite approfondimento e lavoro autonomo, su tematiche indicate dai docenti durante il corso. In tal caso, gli studenti dovranno presentare una relazione scritta (con eventuale codice sviluppato) e, nel caso usuale in cui l'attività progettuale sia presentata contestualmente allo svolgimento dell'esame, la prova orale partirà dalla discussione dell'attività progettuale svolta.

Testi di riferimento

Non esiste un unico libro di testo che introduca tutto il materiale relativo al corso. I docenti forniranno una copia dei lucidi presentati a lezione, che conterranno anche riferimenti a testi e ad articoli utili per ulteriori approfondimenti.