Nuova ricerca

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.