PROGRAMMAZIONE AVANZATA DI SISTEMI MOBILI
cod. 1006646

Anno accademico 2016/17
2° anno di corso - Primo semestre
Docente
Andrea PRATI
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
A scelta dello studente
Tipologia attività formativa
A scelta dello studente
42 ore
di attività frontali
6 crediti
sede: PARMA
insegnamento
in - - -

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.

Programma esteso

- - -

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.

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -