- 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.
- 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 di applicazioni realizzate in aula per iOS seguendo approccio incrementale.
Modulo Android:
- La storia e le versioni di Android
- Installazione della Android SDK
- L'Architettura di Android
- Java e Kotlin
- Il sistema delle risorse di Android
- Android Activity e Fragments
- Android Intents
- Android Layouts, Widgets e Eventi
- Android Menu, Dialog e Toasts
- Android Services e Operazioni Background
- Android Data Management
- Android Google Maps Support
- Operazioni di Networking con Android
- Design pattern e linee guida per Android
- Android Navigation Framework
- Android System Services (alarm, sensori, vibrazione, work managers)
- Framework di sviluppo ibrido
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.6 e iOS 15.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.
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/ ] in modalità e-learning.
Modalità di verifica e valutazione dell'apprendimento
Il corso prevede lo svolgimento di un progetto tipicamente individuale relativo alla realizzazione di un'applicazione iOS e/o Android (se lo studente lo desidera può essere anche ibrida) 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 e il tutor, 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) 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
L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.