Obiettivi formativi
La finalità del corso è quella di affrontare i principi di base per lo sviluppo su piattaforme mobili di ultima generazione (smartphone e tablet)
In particolare verrà fornita allo studente la capacità di comprendere:
- i principi e gli aspetti chiave della programmazione in ambiente mobile
- le caratteristiche delle due principali piattaforme principali per smartphone e tablet: Android e iOS.
Lo studente imparerà ad applicare tali competenze e sarà capace di:
- programmare semplici applicazioni su smartphone in ambiente Android e iOS.
Contenuti dell'insegnamento
Introduzione allo sviluppo su piattoforme mobili.
Architettura delle piattaforme mobili e componenti chiave.
Introduzione alla piattaforma Android, Android SDK e tool di sviluppo.
Programmazione su Piattaforma iOS.
Programmazione cross-platform.
Programma esteso
* Introduzione allo sviluppo su piattoforme mobili
Architettura delle piattaforme mobili e componenti chiave. Aspetti peculiari e problematiche dello
sviluppo su dispositivi mobili.
* Programmazione su Piattaforma Android
Introduzione alla piattaforma Android, Android SDK e tool di sviluppo (Eclipse IDE e Android
simulator). Struttura di un progetto Android. Introduzione ai concetti di Activity, Intent, Service e
Broadcast Receiver. Ciclo di vita delle applicazioni Android. Componenti grafici ed costruzione
di interfacce con layout. Servizi di localizzazione e mappe. Persistenza dei dati con shared
preferences, internal ed external storage, database SQLite. Programmazione concorrente in
Android: multi-threadiing e Asynchronous Task. Android services e comunicazione
inter-processo. Networking: i package java.net e android.net, connessioni HTTP. Gestione della
connettivita’: Connectivity Manager, WiFi Manager, Telephony Manager, comunicazioni
Bluetooth. Gestione dei sensori e i contenuti multimediali.
* Programmazione su Piattaforma iOS
Basi del linguaggio Objective-C: classi, oggetti, properties, protocolli;; gestione della memoria:
Manual Reference Counting (MRC) e Automatic Reference Counting (ARC);; Foundation
classes e classi custom. Introduzione alla piattaforma iOS, tool di sviluppo (XCode) e design
pattern per iOS (MVC, delegation pattern). Ciclo di vita di applicazioni iOS. Views e Controllers.
Componenti grafici ed costruzione di interfacce con InterfaceBuilder. Controllori di
ViewControllers. Servizi di localizzazione e mappe. Networking: richieste sincrone ed asincrone,
connessioni HTTP, socket TCP e UDP, service discovery con Bonjour. Gestione della
connettivita’. Programmazione concorrente in iOS: multi-threading, blocchi, Grand Dispatch
Central, Notification Service. Persistenza dei dati: file plist, preferenze, scrittura su file, database SQLite, CoreData. Gestione dei sensori e contenuti multimediali.
* Programmazione cross-platform
Tecniche e strumenti di programmazione cross-platform: PhoneGap e Titanium Appcelerator
Metodi didattici
Lezioni frontali sulla programmazione in ambiente Android e iOS.
Esercitazioni in laboratorio informatica di base (Android).
Esercitazioni in laboratorio di reti(iOS).
Modalità verifica apprendimento
Prova scritta con tre domande aperte o prova in itinere al termine della parte relativa alla
programmazione in ambiente Android.
Progetto individuale di fine corso concordato con il docente per lo sviluppo di un’applicazione
sulla piattaforma a scelta.
Per il voto finale, sara’ eseguita una media pesata sui risultati della prova scritta e del progetto
con pesi 1/3 per la prova scritta e 2/3 per il progetto.