PROGRAMMAZIONE AVANZATA DI SISTEMI MOBILI

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

Italiano

Obiettivi formativi

Conoscenza e Comprensione
Lo scopo del corso è quello di comprendere come poter realizzare applicazioni (App) avanzate per dispositivi mobili. Oltre alle conoscenze specifiche dei vari linguaggi di programmazione (C++, OpenCV e Java) si acquisiranno conoscenze relative al sistema operativo Android.

Capacità di applicare conoscenza e comprensione
Lo studente acquisirà la capacità di realizzare applicazioni complesse per dispositivi mobili.

Prerequisiti

E' fortemente consigliabile aver seguito il corso di Programmazione di Sistemi Mobili alla triennale.

Contenuti dell'insegnamento

Riallineamento su piattaforme mobili, programmazione di dispositivi mobili e problematiche connesse alla programmazione mobile. Dettaglio della piattaforma Android e delle Android SDK.
Realizzazione di interfaccie grafiche Android mediante widgets. Accessibilità ai sensori mediante Android SDK. Buone pratiche nello sviluppo di App.
Android NDK (Native Development Kit), JNI (Java Native Interface) e IDE di sviluppo Android Studio.
Esempi di applicazioni avanzate possibili.

Introduzione alle applicazioni di mobile vision (visione artificiale applicata a dispositivi mobili).
La libreria OpenCV e il suo interfacciamento con Android: modulo core e il contenitore Mat; modulo imgproc (filtri 2D sulle immagini, morfologia binaria, edge detection, template matching, ecc.); creazione interfacce; feature extraction (Shi-Tomasi, SIFT, SURF, ORB, ecc.); object detection (cascade classifiers, ecc.).
Esempi di progetti OpenCV su dispositivi mobili. Tecniche di ottimizzazione del codice: fixed-point vs floating-point; parallelismo SIMD; ottimizzazioni degli accessi alla e dell’allocazione della memoria; loop unrolling; chiamate a funzioni; ottimizzazioni di basso livello (es: SSE).

Cenni ad altre applicazioni mobili. Uso dei sensori (accelerometri, giroscopio, .) per applicazioni avanzate.

Bibliografia

Slide del corso e materiale online.

Metodi didattici

Il corso consisterà di circa 30 ore di didattica frontale (con esempi pratici di programmazione) e di circa 15 ore di laboratorio durante il quale gli studenti potranno esercitarsi nello sviluppo del proprio progetto.

Modalità verifica apprendimento

L'esame consisterà nella realizzazione di un'App avanzata da svolgere singolarmente. L'argomento dell'App verrà stabilito insieme al docente.