MATEMATICA E INFORMATICAInformaticaAnno accademico 2024/2025
9796774 - MOBILE PROGRAMMING
Docente: MASSIMO ORAZIO SPATA
Risultati di apprendimento attesi
Obiettivo principale del corso è quello di mettere gli studenti nelle condizioni di progettare ed implementare un'applicazione nativa Android oppure cross-platform con Flutter ottimizzata per dispositivi mobile, quindi, che tiene in considerazione le caratteristiche peculiari e i limiti hardware di tali dispositivi, In particolare si cercherà di preparare gli studenti a sfruttare tutte le potenzialità che Android offre ed, utilizzando l'ambiente di sviluppo Android Studio, a costruire un app che sfrutti sia l'hardware del dispositivo che le potenzialità del framework/sistema operativo nel suo complesso.
I risultati di apprendimento attesi per il presente corso di mobile programming sono articolati su diverse competenze e conoscenze che gli studenti devono acquisire al termine del corso:
Conoscenze Tecniche di Base:
- Comprendere i concetti fondamentali dello sviluppo di applicazioni mobili.
- Conoscere le differenze tra le principali piattaforme mobili (iOS e Android).
Sviluppo di Applicazioni:- Essere in grado di progettare, sviluppare e pubblicare un'applicazione mobile funzionale.
- Utilizzare ambienti di sviluppo integrati (IDE) come Android Studio.
Programmazione in Linguaggi Specifici:- Scrivere codice in linguaggi specifici per lo sviluppo mobile, come Java/Kotlin per Android e Swift per iOS.
- Implementare interfacce utente utilizzando XML per Android e Dart.
Gestione dei Dati:- Utilizzare database locali (come SQLite) e remoti per la gestione dei dati nelle applicazioni mobili.
- Implementare tecniche di persistenza dei dati..
Interfaccia Utente e Esperienza Utente (UI/UX):- Progettare interfacce utente intuitive e responsabili.
- Applicare principi di design UI/UX per migliorare l'esperienza dell'utente.
Performance e Ottimizzazione:- Ottimizzare le applicazioni per migliorare le performance e la gestione delle risorse.
- Ridurre il consumo di batteria e migliorare l’efficienza dell’app.
Pubblicazione e Manutenzione:- Pubblicare applicazioni sugli app store (Google Play Store e Apple App Store).
- Gestire il ciclo di vita delle applicazioni, inclusi aggiornamenti e manutenzione.
Consapevolezza delle Tendenze e delle Tecnologie Emergenti:- Rimanere aggiornati sulle ultime tendenze e tecnologie emergenti nel campo della programmazione mobile.
- Valutare e integrare nuove tecnologie e strumenti che possono migliorare lo sviluppo delle applicazioni mobili.
Sicurezza:- Implementare pratiche di sicurezza per proteggere i dati dell'utente e l'integrità dell'applicazione.
- Gestire permessi e autorizzazioni per l’accesso a funzionalità sensibili del dispositivo.
Modalità di svolgimento dell'insegnamento
Il corso consisterà di una serie di lezioni frontali partecipate durante le quali verranno presentati gli argomenti; le stesse saranno supportate dalle presentazione di applicazioni ed esempi. Gli studenti saranno chiamati, inoltre, a svolgere delle esercitazioni di laboratorio individuali e/o di gruppo.
Prerequisiti richiesti
Conoscenza del linguaggio di programmazione Java e della programmazione orientata agli oggetti.
Frequenza lezioni
La frequenza alle lezione è obbligatoria. Verrano proposte ed eseguite esercitazioni pratiche utili per la risoluzione di problemi legati all'utilizzo dell'SDK, dei framework di supporto e dell'IDE.
Contenuti del corso
Il materiale del corso (esercizi e slides) sono disponibili iscrivendosi al canale Teams di Mobile Programming con il codice pdzgqm8, dentro la cartella "Materiale del corso". Per approfondire è fortemente consigliato l'uso dei testi di riferimento.
- Piattaforme per dispositivi mobili
- Un pò di storia
- Il futuro delle applicazioni mobile
- Cosa Android non è...
- Cosa allora è...
- Applicazioni Android Native e di terze parti
- Java: breve sintesi
- Android Run Time
- Architettura di Android
- Strumenti di sviluppo per Android: Android Studio
- Gradle
- Hello World
- Layout di un app Android
- Il simulatore di device Android
- Componenti di un applicazione Android
- Sviluppare per dispositivi mobili
- Esempio TO-DO List
- Android Development Tools
- Creazione di applicazioni ed attività
- Componenti di una applicazione
- Activity: foreground e background activity
- Fattori da considerare per la realizzazione di una app efficiente, reattiva e sicura
- Ciclo di vita di un Activity
- Android memory manager
- Risorse di un applicazione Android
- Esternalizzazione delle risorse
- Tipi di risorse
- Fragment
- View, ViewGroup
- Creazione di una Interfaccia Utente: i Layout
- I menù
- Oltre le Activity: gli Intents
- Services: background process
- Toast e notification
- Persistenza ed SQLite Content Provider
- Content providers
- Cursor
- Firebase
- Flutter: Introduzione
- Flutter: installazione
- Flutter: creazione di una semplice applicazione con Android Studio
- Flutter: Architettura di un applicazione
- Flutter introduzione alla programmazione in Dart
- Flutter: introduzione ai widgets
- Flutter: introduzione ai layouts
- Flutter: introduzione ai gesture
- Flutter: state management
Testi di riferimento
- Reto Meier, Ian Lake - "Professional Android" 4th Edition - Wrox - ISBN: 978-1-118-94952-8
- Massimo Carli, Android 9 – Apogeo – ISBN: 978-88-503-3472-2
- Vincenzo Giacchina, Sviluppare applicazioni con Flutter - Apogeo - ISBN: 9788850336463
Programmazione del corso
| | Argomenti | Riferimenti testi |
| 1 | Introduzione ad Android | |
| 2 | Strumenti di sviluppo: Android Studio | |
| 3 | Componenti principali di un applicazione Android | |
| 4 | Activity Life cycle | |
| 5 | Risorse di un Applicazione Android | |
| 6 | Sviluppare per Android: Activity, Fragment ed Intent | |
| 7 | View ed interfacce utente | |
| 8 | Oltre le Activities: Intents ed Intent filter | |
| 9 | Services: background process | |
| 10 | Persistenza ed SQL Lite | |
| 11 | Firebase: Real time database | |
| 12 | Flutter e Dart | |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame finale consisterà nella progettazione e realizzazione di un'app a partire da una serie di specifiche assegnate/concordate.
L'app realizzata, accompagnata da una relazione finale, sarà argomento di un colloquio orale che completerà l'esame.
La prova è strutturata in modo che ad ogni studente sia attribuito un voto secondo il seguente schema:
- Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di rispondere ad almeno il 60% delle domande né di svolgere gli esercizi..
- 18-23: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di collegamento dei contenuti sono modeste, riesce a risolvere semplici esercizi.
- 24-27: lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di collegamento dei contenuti sono buone, risolve gli esercizi con pochi errori.
- 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di padroneggiarli compiutamente e di collegarli con spirito critico; risolve gli esercizi in modo completo e senza errori.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus. La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Informazioni per studenti con Disabilità e/o DSA
A garanzia delle pari opportunità gli studenti interessati possono richiedere un colloquio personale in modo da programmare eventuali misure compensative e/o dispensative in base agli obiettivi didattici ed alle specifiche esigenze di ciascuno. Per ulteriori informazioni rivolgersi al docente referente CInAP (Centro per l’integrazione Attiva e Partecipata - Servizi per le Disabilità e/o i DSA) del DMI.
Esempi di domande e/o esercizi frequenti
Esempi di progetti assegnati:
- "Scaffometro": app che permette di monitorare e memorizzare lo stato delle strade geolocalizzando
- "Stream Annotation": possibilità di inserire durante le riprese video annotazioni di tipo testuale e/o di altra natura
- "Light chat": app di comunicazione tra 2 smartphone che sfrutta camera e flash per scambiare messaggi con codice morse
- "Vetrina prodotti": app che attraverso accesso ad un db come Firebase o SQLite permette di gestire la vetrina prodotti di una attività commerciale.
English version