PROGRAMMAZIONE DI SISTEMI MOBILI
cod. 1006702

Anno accademico 2024/25
3° anno di corso - Secondo semestre
Docente
Gianfranco LOMBARDO
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
A scelta dello studente
Tipologia attività formativa
A scelta dello studente
48 ore
di attività frontali
6 crediti
sede: PARMA
insegnamento
in ITALIANO

Obiettivi formativi

La finalità del corso è quella di affrontare i principi di base per lo sviluppo su piattaforme mobili di ultima generazione.
In particolare verrà fornita allo studente la capacità di comprendere:
- i principi e gli aspetti chiave della programmazione in ambiente mobile


Lo studente imparerà ad applicare tali competenze e sarà capace di programmare semplici applicazioni su smartphone in ambiente Android.

Prerequisiti

Pre-requisiti strettamente consigliati sono:
- Object Oriented Programming
- Sistemi operativi e programmazione concorrente

Pre-requisiti consigliati per una maggiore fruizione del corso
- Basi di dati
- Ingegneria del Software

Contenuti dell'insegnamento

Il corso avrà come oggetto l'introduzione allo sviluppo di applicazioni mobile per ambienti Android, con cenni allo sviluppo Cross-platform.
In particolare nel corso verranno affrontati i seguenti temi:
- Introduzione al Mobile Computing (Architetture e Pattern)
- Object Oriented Programming in Kotlin
- Sviluppo in ambiente Android
- Database locali e remoti
- Programmazione concorrente e asincrona
- Elaborazione di dati sensorial
- Cenni di Machine learning per applicazioni mobili

Programma esteso

Il corso avrà come oggetto l'introduzione allo sviluppo di applicazioni mobile per ambienti Android.
In particolare, sarà articolato in 10 sottomoduli:
1) Introduzione al linguaggio Kotlin
Basi del linguaggio
Object Oriented Programming in Kotlin
Toy samples in Android Studio

2)Android basics
Layouts
Best practices per lo sviluppo della User Interface
Navigazione e supporto cross-device

3)Networking
Connessioni e data retrieval mediante HTTP e REST
Data retrieval utilizzando Wifi e bluetooth
Scambio di informazioni in formato JSON

4) Data persistence
Internal storage
External storage
SQLite e Android ROOM

5)Background services
Android Work Manager
Service Life Cycle
Notifiche

6) Concorrenza
Concorrenza in Kotlin
Concorrenza e UI
Concorrenza e Android

7) Sensori e multimedia (Raw data)
Accelerometro
Giroscopio
Fotocamera

8) Android Open Source Project (Software-based motion sensors)
Gravity sensor
Linear accelerometer
Rotation vector sensor
Significant motion sensor
Step counter sensor
Step detector sensor

9) Towards Artificial Intelligence
Android Speech Recognizer -> SpeechToText
Android TextToSpeech
Cenni di Natural Language Processing

10) Design pattern per lo sviluppo software
Pattern creazionali

Bibliografia

- Slide proposte a lezione dal docente
- Documentazione di libero accesso: https://developer.android.com
- Materiale fornito durante le esercitazioni di laboratorio

Metodi didattici

Lezioni frontali ed esercitazioni di laboratorio

Modalità verifica apprendimento

Le modalità d'esame prevedono
- La realizzazione di un progetto finale riguardante lo sviluppo di un'applicazione mobile su proposta dello studente o a scelta tra quelle che verranno proposte dal docente
- Stesura di una dettagliata relazione tecnica sull'attività di progetto da consegnarsi almeno 10 giorni prima dell'appello
- Esame orale con domande di teoria e presentazione power-point dell'attività di progetto

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -