66860 - LABORATORIO DI APPLICAZIONI MOBILI

Scheda insegnamento

Anno Accademico 2017/2018

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.

Programma/Contenuti

Introduzione:

  • Panoramica sugli aspetti tecnologici dei dispositivi iPhone, iPod Touch e iPad (e iOS in generale).
  • Panoramica aspetti tecnologici dei dispositivi Android.

Modulo iOS:

  • iOS technology layers: Core OS, Core Services, Media, Cocoa Touch.
  • iOS e iOS SDK. Strumenti di sviluppo per la piattaforma iOS: Xcode, Storyboard, Simulator, Instruments.
  • Linguaggio Swift (cenni su ObjectiveC).
  • Cocoa design pattern, Model-View-Controller.
  • Target, Action, Outlets.
  • 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.
  • Strumenti e modelli per la persistenza dei dati su iOS. CoreData e Table Views.
  • Interfacciamento con dati esterni (e web).
  • Debugging e Testing delle applicazioni per iOS.
    App Store.

Modulo Android:

  • The Android Class
  • Installing the Android SDK
  • The Android Architecture
  • The Android Resources System
  • Android Activities and Fragments
  • Android Intents
  • Android Layouts
  • Android Widgets and Events
  • Android Animation, Menu, Dialog and Toasts
  • Android Services
  • Android Data Management
  • Android Google Maps Support
  • Kotlin for Android
  • Android Network
  • Android System Services

Testi/Bibliografia

Matt Neuburg, iOS 8 Programming Fundamentals with Swift, March 2015
Materiale Online su iOS Developer Library: https://developer.apple.com/library/ios/navigation/
Massimo Carli, Android 4(tm) Guida per lo sviluppatore, Apogeo, ISBN: 978-88-503-3222-9

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 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). Durante le lezioni, sessioni denominate Journal Club prevederanno l'illustrazione da parte di gruppi di studenti (obbligatoria) di temi emergenti legati al mondo delle apps. Tale illustrazione fa parte dell'esame orale del corso e fornisce una parte di valutazione. 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.
VNC client per condivisione slides e programmazione live.
Dispositivi e laboratorio.
Testi consigliati e riferimenti in rete.

Orario di ricevimento

Consulta il sito web di Luciano Bononi

Consulta il sito web di Luca Bedogni