Seguici su
Cerca

MOBILE PROGRAMMING

Anno accademico 2024/2025 - 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

  1. Reto Meier, Ian Lake - "Professional Android" 4th Edition - Wrox - ISBN: 978-1-118-94952-8
  2. Massimo Carli, Android 9 – Apogeo – ISBN: 978-88-503-3472-2
  3. Vincenzo Giacchina, Sviluppare applicazioni con Flutter - Apogeo - ISBN: 9788850336463

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione ad Android
2Strumenti di sviluppo: Android Studio
3Componenti principali di un applicazione Android
4Activity Life cycle
5Risorse di un Applicazione Android
6Sviluppare per Android: Activity, Fragment ed Intent
7View ed interfacce utente
8Oltre le Activities: Intents ed Intent filter
9Services: background process
10Persistenza ed SQL Lite
11Firebase: Real time database
12Flutter 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.