- Docente: Luciano Bononi
- Crediti formativi: 6
- SSD: INF/01
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
- Corso: Laurea in Informatica per il management (cod. 8014)
Conoscenze e abilità da conseguire
Al termine del corso, lo studente conosce gli aspetti tecnologici e metodologici e gli strumenti per lo sviluppo di applicazioni per dispositivi mobili, su piattaforme iOS (iPhone, iPad, iPod Touch) e Android. Conosce inoltre la gestione di dispositivi dotati di interfacce utente innovative, multi-touch, gestione eventi, la programmazione objectiveC, Eclipse e Android SDK, design patterns, interfacciamento dati esterno, sensori e geo-localizzazione, servizi di networking, debugging e test di applicazioni. Conosce infine: - le problematiche delle applicazioni eseguite in contesto wireless mobile; - le piattaforme più importanti per lo sviluppo di applicazioni mobili; - le API dei device interni; - la gestione della multimedialità in contesto wireless mobile; - iPhone SDK e Android SDK; - come progettare e implementare una applicazione con il pattern architetturale Model-View-Control nei due ambienti di sviluppo.
Contenuti
Panoramica sugli aspetti tecnologici dei dispositivi iPhone,
iPod Touch e iPad.
Panoramica aspetti tecnologici dei dispositivi Android.
iOS technology layers: Core OS, Core Services, Media, Cocoa
Touch.
iOS e iOS SDK.
Strumenti di sviluppo per la piattaforma iOS: Xcode, Interface
Builder, Simulator, Instruments.
Componenti applicazioni Android, Applications, Activities, Activity
stack, tasks, Intents.
ObjectiveC.
Java e XML.
Inizializzazione degli oggetti e gestione della memoria.
Proprietà, Protocolli e Categorie in Objective-C.
Cocoa design pattern, Model-View-Controller.
Target, Action, Outlets.
Singleton, Notification, Delegate.
Foundation Framework e UIKit (Cocoa Touch).
Interfaccia utente, UIWindow e UIView.
Creazione di una UIViewController e gestione applicazioni
MultiViews, controllers e views.
Gestione eventi Touch e Multi-touch, gestures.
Input di testo e gestione del testo.
Strumenti e modelli per la persistenza dei dati su iOS.
CoreData e Table Views.
Interfacciamento con dati esterni (e web).
Implementazione delle mappe e servizi di geo-localizzazione.
Sensore di movimento e accelerometro.
Interfacce ruotabili e ridimensionabili.
Networking services.
Debugging e Testing delle applicazioni per iOS.
App Store.
Testi/Bibliografia
Bill Dudney, Chris Adamson, Sviluppare applicazioni con iPhone SDK,
Apogeo 11/2009, ISBN: 978-88-503-2895-6
Massimo Carli, Android(tm) Guida per lo sviluppatore, Apogeo
02/2010, ISBN: 978-88-503-2921-2
Metodi didattici
Il corso si svolge al secondo semestre e rappresenta un modulo unico di 6 cfu. Il modulo è strutturato in lezioni frontali in aula, in italiano con materiale in lingua inglese. Vengono presentati innanzitutto i fondamenti degli argomenti trattati nel resto del corso. In particolare, dopo aver introdotto le nozioni di base del modello MVC (model-view-controller) e gli strumenti di sviluppo (iOS Xcode e Android SDK) il corso si suddivide in due filoni di lezioni ed esercitazioni di laboratorio, che riguardano lo sviluppo di applicazioni mobili in ambiente Android e iOS.
Ogni lezione illustra un tema specifico, con molti riferimenti alle librerie di supporto, agli strumenti e facilities per lo sviluppo e il debug, e nella maggior parte dei casi si finalizza con la messa in pratica dei concetti illustrati direttamente all'interno di esercitazioni di programmazione svolte in aula dal docente (demo). Ciò favorisce la comprensione dei principi e la loro messa in pratica, con il risultato di permettere agli studenti di realizzare le loro proto-applicazioni al di fuori dell'aula (su strumenti di sviluppo personali o nel laboratorio didattico del corso) in totale autonomia.
Modalità di verifica e valutazione dell'apprendimento
Il corso prevede lo svolgimento di un progetto individuale o di
gruppo (opportunamente definito e dimensionato), relativo alla
realizzazione di un'applicazione iOS e/o Android, e nella
discussione delle scelte progettuali e di realizzazione del
progetto in una sessione di esame orale (di circa 60 minuti). Prima
della fine del corso vengono proposte alcune tipologie di
applicazioni mobili da realizzare come progetto del corso, e
possibili livelli di estensione e complessità. Se lo studente è
interessato, può proporre progetti su base personale. In tal caso,
l'applicazione oggetto del progetto deve essere preventivamente
concordata con il docente, preferibilmente inviando una e-mail
con subject "Proposta progetto esame corso LAM A.A. X/Y"
all'indirizzo email lam-projects@cs.unibo.it . Definito un
progetto (approvato dal docente o facente parte dell'elenco
fornito), il candidato deve sviluppare l'applicazione in ambiente
iOS o Android (eventualmente su entrambe le piattaforme) e deve
produrre una presentazione di 20 minuti (supportata da circa 25
slide) oltre che una relazione in formato elettronico (pdf, ps,
html) equivalente ai contenuti verbali della presentazione, e
contenente tutti i riferimenti a materiale, codice realizzato e
fonti documentali. Per la consegna dei progetti sono fissate di
norma 6 scadenze annuali: a Giugno, Luglio, Settembre, Ottobre,
Dicembre e Febbraio. La consegna dei progetti deve avvenire entro
le date indicate (comunicate nella mailing list del corso e sul
portale delle lezioni del corso), inviando una email
a <lam-projects@cs.unibo.it> con subject "progetto
LAM<anno> - <iOS/Android> - Nome, Cognome, Matricola" e
allegando un archivio compresso con il progetto (se di dimensione
inferiore a 2MB), oppure indicando un link web per lo scaricamento
dell'archivio. Una volta consegnato il progetto si viene convocati
per la prova orale di norma nell'arco della settimana che segue la
scadenza di consegna. La data della prova viene quindi
concordata via e-mail, e pubblicata sul newsgroup per consentire
alle persone interessate di partecipare. La prova si tiene presso
il l'ufficio del docente oppure in una delle aule seminari del
Dipartimento di Informatica - Scienza e Ingegneria, in Mura Anteo
Zamboni 7. Alla prova di esame (demo/presentazione del
progetto/seminario) viene inoltre collegato un esame orale
(costituito da domande e veloci esercizi) su tutto il programma del
corso, incluse domande sulle demo svolte a lezione in entrambe le
piattaforme (iOS e Android). Gli studenti sono quindi tenuti a
conoscere le tecniche di sviluppo illustrate a lezione su entrambe
le piattaforme.
L'esito della discussione del progetto e della prova orale
producono due voti in trentesimi che a loro volta determinano
l'eventuale superamento dell'esame e la proposta di voto finale.
Entrambe le valutazioni devono essere sufficienti per potere
superare l'esame. Il peso del progetto è del 75%, quello
dell'orale è del 35% (totale 110%). Se il voto finale così
determinato eguaglia o supera i 30/30 può essere prevista
l'attribuzione della lode.
Strumenti a supporto della didattica
Slide elettroniche, personal computer a proiettore.
Dispositivi e laboratorio.
Testi consigliati e riferimenti in rete.
Link ad altre eventuali informazioni
http://www.cs.unibo.it/~bononi/
Orario di ricevimento
Consulta il sito web di Luciano Bononi