Università degli studi dell'Insubria

PROGRAMMAZIONE DI DISPOSITIVI MOBILI

A.A. di erogazione 2019/2020
Insegnamento opzionale

Laurea triennale in INFORMATICA
 (A.A. 2018/2019)

Docenti

L'insegnamento è condiviso, tecnicamente "mutuato" con altri corsi di laurea, consultare il dettaglio nella sezione Mutuazioni
Anno di corso: 
2
Tipologia di insegnamento: 
Affine/Integrativa
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
6
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
56
Dettaglio ore: 
Lezione (40 ore), Laboratorio (16 ore)

Obiettivo di questo corso è presentare nel dettaglio gli aspetti relativi alla programmazione dei dispositivi mobili. Il corso parte dalla discussione delle architetture dei dispositivi mobili e delle caratteristiche peculiari della programmazione di tali dispositivi. Vengono quindi presentate le più comuni architetture software e viene discusso nel dettaglio il caso di Android. Vengono analizzati i principali framework che costituiscono il sistema Android e i servizi che possono essere integrati all’interno delle applicazioni con particolare attenzione alle API di Google. Vengono quindi presentati esempi di applicazione, sulla base dei quali viene compiuta un’analisi del processo di sviluppo delle applicazioni.
Al termine del corso lo studente
1. possiede le conoscenze necessarie alla comprensione degli aspetti più evoluti del framework di Android, all’utilizzo delle sue componenti e dei servizi. Lo studente ha inoltre le conoscenze necessarie ad affrontare individualmente lo studio di altri framework di sviluppo di applicazioni mobili.
2. è in grado di progettare, sviluppare e testare applicazioni per dispositivi mobili basate su Android e di comprendere i framework disponibili per l’integrazione di servizi.
3. è in grado di scegliere in autonomia di giudizio le soluzioni più adatte alla realizzazione di una specifica applicazione.
4. è in grado di comunicare in modo compiuto e con la corretta terminologia le caratteristiche di un framework di programmazione per dispositivi mobili e di discutere le scelte architetturali alla base dei progetti realizzati.

Prerequisiti: 

Lo studente che affronta questo corso deve possedere una conoscenza dettagliata dell’architettura degli elaboratori, della programmazione in linguaggio Java e delle strutture dati fondamentali. Le conoscenze e abilità necessarie per un proficuo apprendimento di questo insegnamento sono impartite nei corsi fondamentali del primo anno di Programmazione e Architettura degli Elaboratori, che dunque costituiscono propedeuticità obbligatoria.

Le lezioni affronteranno i seguenti argomenti:
Introduzione ai dispositivi mobili (8 h, obiettivo formativo 1)
- Architettura hardware di un dispositivo mobile
- Ambienti di sviluppo e indroduzione ad AndroidStudio
- Caratteristiche distintive della programmazione di dispositivi mobili (usabilità, robustezza, .).
- Versioni Android e Kernel.
- Dalvik VM e ART VM,
- LogCat come sistema di logging
- Tipi di applicazioni in ambiente Android
Elementi di base nella programmazione di dispositivi mobile (32 h, obiettivo formativo 2 )
- Creazione di una HelloWorld App per Android
- Git come sistema di versioning per progetti di applicazioni mobile
- Creazione di una Activity e studio del suo ciclo di vita
- Configurazione e gestione di un evento di tipo onClick nella programmazione event-driven. Listener
- Componenti di una App, Processesi e Task
- Task e Backstack per la vavigazione tra le varie activity di una applicazione
- Risorse di una App Android: Color, Dimension, Internazionalizzazione, etc.
- Gestione dei contenuti di una Activity attraverso l’uso di View e ViewGroup come ad esempio ListView, GridView, RecyclerView, Adapter e Adapter personalizzati.
- Fragments e loro utilizzo.
- Creazione di app con database locale. Esempi con SQLite
- Intent espliciti ed impliciti
- Creazione e gestione di ToolBar, ActionBar, menù
Elementi avanzati nella programmazione di dispositivi mobile (16 h, obiettivi formativi 3 e 4)
- Google maps, Location Based Services, Location providers, Geocoding
- Permessi per l’uso di informazioni sensibili in un dispositivo mobile.
- Firebase per l'autenticazione, analytics, realtime database
- Thread, AsyncTask, Services
Gli argomenti verranno affrontati usando come riferimento il linguaggio di programmazione Java per l’ambiente Android. Ciò nondimeno, molti degli argomenti trattati nel corso sono di validità generale, e le tecniche proposte sono generalmente applicabili con linguaggi diversi.

Il corso si articola in lezioni frontali (40 ore) che servono a capire cos'è la programmazione dei dispositivi mobili, ed esercitazioni (16 ore) per imparare la programmazione in ambito mobile.
Data la caratteristica fortemente applicativa del corso, le lezioni frontali saranno intervallate da esercitazioni svolte presso un laboratorio attrezzato. Il laboratorio permette una manipolazione concreta degli argomenti trattati a lezione attraverso la possibilità di poter scegliere e decidere la soluzione migliore ad un determinato problema.
La frequenza alle lezioni seguita dallo studio dell'argomento trattato, è fortemente consigliata per poter affrontare l'esercitazione ad essa connessa.
Tutte le esercitazioni prevedono una valutazione dell’elaborato fatta dal docente prima dello scadere del tempo. Le valutazioni possono essere tenute in considerazione durante l’attribuzione del voto finale per la prova d’esame.

Modalita' di verifica dell'apprendimento: 

L’esame si svolgerà in forma scritta, con quesiti formulati in modo da verificare le conoscenze ed i risultati di apprendimento attesi, e attraverso lo sviluppo e discussione di un prototipo di progetto sviluppato nel framework di Android.
Lo scopo della prova è quello di verificare che lo studente abbia compreso le caratteristiche distintive della programmazione di dispositivi mobili effettuando le giuste scelte architetturali nello sviluppo del progetto; imparato ad utilizzare i componenti principali del framework di Android e dei servizi di Google.

La prova scritta, tramite quiz a scelta multipla, potrà essere sostenuta in due modalità:
- al termine del corso, durante le sessioni d’esame saranno organizzate delle prove sull’intero programma del corso;
- durante le ore di esercitazione e al termine di un particolare argomento trattao.

Per poter superare l'esame lo studente deve:
- rispondere ai quiz a scelta multipla su argomenti trattati a lezione. I quiz vengono resi disponibili tramite la piattaforma Moodle durante la prova d'esame o durante le esercitaioni, in uno dei laboratori di informatica disponibili (voto minimo 16/30, voto massimo 24/30);
- sviluppare un progetto scelto tra l'insieme dei progetti disponibili. Lo studente potrà proporre una sua idea di progetto che però dovrà essere discussa con il docente prima di procedere con lo sviluppo. Questa prova consiste in una presentazione del progetto (attraverso l'utilizzo di un portatile o PC in cui è installato AndroidStudio e il progetto) e in una discussione sugli argomenti che toccano il progetto. Le tracce di progetto sono indicative e non è richiesta la realizzazione di un'app completa, lo studente dovrà dimostrare che il lavoro fatto sia proporzionale ai 6 CFU del corso. Questa seconda prova verrà fatta lo stesso giorno dell'appello, subito dopo i quiz.

Il progetto è di centrale importanza per il superamento dell'esame e consente di ottenere un massimo di 12 punti (in trentesimi).

Data la continua evoluzione del mondo della programmazione dei dispositivi mobile, non vengono proposti dei libri di testo particolari che rischiano di diventare obsoleti dopo qualche mese.
Il materiale didattico è disponibile sul sito di e-learning: Slide, dispense, esempi di applicazioni.
Esistono però diversi libri e siti web che possono proficuamente essere utilizzati dagli studenti per poter integrare il materiale fornito tramite e-learning. Ad esempio
- Per studiare la struttura dei progetti di Android studio: https://developer.android.com/training/basics/firstapp/
- Per studiare l'architettura delle app: https://developer.android.com/jetpack/docs/guide
- Libro aggiornato ad una versione recente di Android:
The Busy Coder’s Guide to Android Development 8.12
Author(s): Murphy Mark L.
Series: The Busy Coder’s Guide to Android Development
Publisher: CommonsWare, Year: June 2018
ISBN: 0981678009

Il docente riceve su appuntamento, previa richiesta via e-mail a ignazio.gallo@uninsubria.it. Il docente risponde solo alle e-mail firmate e provenienti dal dominio studenti.uninsubria.it.

Cerchi il programma? Potrebbe non essere ancora stato caricato o riferirsi ad insegnamenti che verranno erogati in futuro.
Seleziona l‘anno in cui ti sei immatricolato e troverai le informazioni relative all'insegnamento del tuo piano di studio.

A.A. 2019/2020

Anno di corso: 2
Curriculum: PERCORSO COMUNE
Anno di corso: 3
Curriculum: PERCORSO COMUNE

A.A. 2018/2019

Anno di corso: 3
Curriculum: PERCORSO COMUNE

A.A. 2017/2018

Anno di corso: 2
Curriculum: PERCORSO COMUNE
Anno di corso: 3
Curriculum: PERCORSO COMUNE

A.A. 2016/2017

Anno di corso: 2
Curriculum: PERCORSO COMUNE
Anno di corso: 3
Curriculum: PERCORSO COMUNE

A.A. 2015/2016

Anno di corso: 2
Curriculum: PERCORSO COMUNE
Anno di corso: 3
Curriculum: PERCORSO COMUNE

A.A. 2014/2015

Anno di corso: 2
Curriculum: PERCORSO COMUNE
Anno di corso: 3
Curriculum: PERCORSO COMUNE

A.A. 2013/2014

Anno di corso: 3
Curriculum: PERCORSO COMUNE