66860 - LABORATORIO DI APPLICAZIONI MOBILI

Anno Accademico 2021/2022

  • Docente: Luciano Bononi
  • Crediti formativi: 6
  • SSD: INF/01
  • Lingua di insegnamento: Italiano
  • Moduli: Luciano Bononi (Modulo 1) Federico Montori (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Bologna
  • Corso: Laurea in Informatica per il management (cod. 8014)

    Valido anche per Laurea in Informatica (cod. 8009)

Conoscenze e abilità da conseguire

"Il corso tratta gli aspetti tecnologici e metodologici e gli strumenti per lo sviluppo di applicazioni per dispositivi mobili, su piattaforme iOS (iPhone, iPad, iPod Touch, ecc.) e Android. Sono incluse la gestione di dispositivi dotati di interfacce utente innovative, multi-touch, gestione eventi, la programmazione Swift (iOS) e Android SDK, design patterns, interfacciamento dati esterno, sensori e geo-localizzazione, servizi di networking, debugging, problemi di privacy, context aware computing e test di applicazioni. Alla fine del corso lo studente conosce: - 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 multimedialita' in contesto wireless mobile; - iOS SDK e Android SDK - come progettare e implementare applicazioni con il design pattern Model-View-Controller, nei due ambienti di sviluppo. "

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 e Swift UI (e brevi cenni su ObjectiveC).
  • 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.
  • Debugging e Testing delle applicazioni realizzate in aula per iOS seguendo approccio incrementale.

Modulo Android:

  • The Android Class
  • Installing the Android SDK
  • The Android Architecture
  • The Android Resources System
  • Android Activities and Fragments
  • Android Intents
  • Android Layouts, Widgets and Events
  • Android Menu, Dialog and Toasts
  • Android Services and Background
  • Android Data Management
  • Android Google Maps Support
  • Android Network
  • Android Design guidelines and patterns
  • Android Navigation
  • Android System Services (alarms, sensors, vibration, audio)

Testi/Bibliografia

Matt Neuburg, iOS 11 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics, Ottobre 2017,

Craig Clayton, Learn iOS 11 Programming with Swift 4 - Second Edition: Learn the fundamentals of iOS app development with Swift 4 and Xcode 9, Jan 2018 o qualsiasi edizione successiva fino a Swift 5.


Materiale Online su iOS Developer Library: https://developer.apple.com/library/ios/navigation/


Massimo Carli, Android 9 Guida completa per lo sviluppo di applicazioni mobile. Apogeo, ISBN: 8850334745

Materiale online su https://developer.android.com/

Metodi didattici

Il corso si svolge al secondo semestre e pur rappresentando un corso unico di 6 cfu è diviso in due moduli (iOS e Android). Ogni 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 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.

Vengono inoltre dati alcuni elementi per orientare lo studente verso lo sviluppo di applicazioni ibride.

Modalità di verifica e valutazione dell'apprendimento

Il corso prevede lo svolgimento di un progetto individuale 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 30 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 del tutor del corso. 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 10-15 minuti (supportata da 10-20 slide) oltre che una relazione in formato elettronico (pdf, ps, html) equivalente ad una versione espansa dei contenuti verbali della presentazione, contenente la descrizione dell'utilizzo dell'applicazione supportato da screenshot, scelte progettuali e 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, Novembre, Gennaio e Febbraio. La consegna dei progetti deve avvenire entro le date indicate (comunicate nella mailing list del corso e sul portale VIRTUALE/IOL delle lezioni del corso), esclusivamente tramite l'applicativo VIRTUALE/IOL del corso, allegando un archivio compresso con il codice del progetto e la relazione. Una volta consegnato il progetto si viene convocati per la prova orale di norma nell'arco di una o due settimane che seguono la scadenza di consegna. La data della prova viene stabilita preventivamente su Almaesami 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 (compatibilmente con le restrizioni causate dal COVID-19, qualora persistessero, anche da remoto). Alla prova di esame (demo/presentazione del progetto) viene inoltre collegato un esame orale (costituito da domande e veloci esercizi) su tutto il programma del corso, incluse domande teoriche 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 produce un voti in trentesimi che può essere modificato in difetto o in eccesso dalla parte teorica dell'esame orale. Ciò determina la proposta di voto finale. Entrambe le parti dell'esame devono essere sufficienti per poterne determinare il superamento. 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.
Microsoft Teams 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 Federico Montori

SDGs

Istruzione di qualità Lavoro dignitoso e crescita economica Imprese innovazione e infrastrutture Città e comunità sostenibili

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.