|
Luca BEDOGNI
Professore Associato Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica
|
Insegnamento: Programmazione mobile
Informatica (Offerta formativa 2024)
Obiettivi formativi
Gli obiettivi dell'insegnamento sono:
- introdurre le problematiche dello sviluppo dei sistemi distribuiti e dei sistemi mobili
- presentare le piattaforme per i dispositivi mobili
- presentare le tecnologie di sviluppo di applicazioni mobili
Alla fine del corso lo studente sarà in grado di progettare e sviluppare applicazioni mobili usando diversi linguaggi e piattaforme.
Tali applicazioni potranno gestire database locali e\o remoti, sfruttare accelerazione grafica e eseguire in diversi thread di esecuzione.
Prerequisiti
Conoscenze di programmazione ad oggetti,
Conoscenze base di algebra lineare.
Programma del corso
I contenuti del corso si sviluppano su due macro argomenti.
Primo macro argomento: Progetto e sviluppo di applicazioni per dispositivi mobili [circa 20 ore].
Si parte da un'introduzione sulla storia dei sistemi operativi per dispositivi mobili per poi
entrare nei dettagli della programmazione e sviluppo software in sistemi android.
In particolare verranno trattati costrutti specifici inerenti alla logica delle applicazioni, a come esse possano gestire dati e risorse e al ruolo dell'utente di questi sistemi.
Verranno trattare problematiche legate al multithreading in Android e alcune tecniche di sviluppo cross-platform.
Secondo macro argomento: Computer Grafica (CG) per sistemi mobile ed embedded [circa 20 ore]
In questa parte di insegnamento verranno fornite competenze base per il progetto e lo sviluppo di applicazioni per sistemi mobili in grado di sfruttare accelerazione grafica per produrre scene tridimensionali. Ciò è reso possibile dall'uso dell'API OpenGLES e la sua interazione con il sistemo operativo android. Dopo una breve introduzione sui concetti fondamenti della computer grafica, si presenteranno shader, modelli di illuminazione e tutto ciò che riguarda la pipeline grafica di OpenGLES.
L'elenco puntuale degli argomenti trattati è disponibile qui:
https://git.hipert.unimore.it/ncapodieci/mobileprogramming/-/wikis/home
Metodi didattici
Lezioni frontali tramite slide sulla teoria ed esercitazioni in aula di applicazione della teoria.
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.
Il corso è erogato in lingua Italiana.
Tutte le informazioni tecniche e organizzative sull'insegnamento,
saranno caricati su piattaforma moodle. Si invita lo studente ad iscriversi ed a consultare tale
piattaforma con regolarità.
Testi di riferimento
Dispense a cura del docente.
Le dispense aggiornate sono reperibili sul sito:
https://git.hipert.unimore.it/ncapodieci/mobileprogramming
Verifica dell'apprendimento
La verifica si svolgerà attraverso lo sviluppo di un progetto e una prova orale. Il progetto consisterà nello sviluppo di una applicazione mobile.
La prova orale consisterà nella presentazione del progetto e in domande per la verifica della comprensione dell'intero programma svolto.
Più nello specifico:
Verranno fornite due tracce per lo sviluppo del progetto; una traccia inerente alla prima parte del corso ed un'altra traccia riguardante la seconda. Lo studente può sceglierne una.
Il progetto pesa per un 75% del voto finale; il rimanente 25% risulta dalle domande inerenti alle parti di corso non direttamente interessate dal progetto svolto.
La presentazione del progetto e le domande avvengono all'interno di un'unica data di esame. Il codice del progetto dovrà essere consegnato al docente qualche giorno prima della data di esame.
La durata della prova è tra i 30 e i 60 minuti.
La valutazione in trentesimi della prova viene resa nota allo studente al termine della prova stessa.
Risultati attesi
Conoscenza e comprensione
Conoscere le principali tecniche di sviluppo per sistemi mobile ed embedded
Conoscere i costrutti tipici della programmazione Java e Kotlin per applicazioni su Android.
Conoscere i limiti e le differenze nello sviluppo di applicazioni mobile rispetto a sistemi più tradizionali.
Conoscere i concetti base della computer grafica per il rendering di scene tridimensionali.
Conoscere i concetti base della pipeline OpenGL/GLES
Conoscenza e capacità di comprensione applicate
Capacità di scrivere applicazioni relativamente complesse in Android, utilizzando diversi linguaggi di programmazione.
Capacità di scrittura di semplici programmi con output grafico in esecuzione su una GPU.
Capacità di gestire applicazioni mobili multithread.
Autonomia di giudizio
Al termine dell’insegnamento lo studente avrà migliorato le proprie capacità di
- valutazione critica degli applicativi progettati ed implementati.
- argomentare le scelte fatte per ciò che concerne linguaggi e librerie utilizzate
- prevedere come l'utente possa agire sulle applicazioni progettate ed implementate.
Abilità comunicative
La prova orale finale consentirà di esprimere i concetti appressi con un linguaggio appropriato e sostenere una discussione in merito agli argomenti trattati e alle scelte progettuali effettuate.
Capacità di apprendere
Le attività descritte, in particolare le esercitazioni, consentono di acquisire gli strumenti
metodologici indispensabili per potere autonomamente provvedere ad un adeguato aggiornamento
ed approfondimento, che permetta allo studente di affrontare anche problemi nuovi e non solo esercizi di applicazione automatica di quanto studiato.