- Oggetto:
- Oggetto:
Programmazione per Dispositivi Mobili
- Oggetto:
Mobile Device Programming
- Oggetto:
Anno accademico 2022/2023
- Codice dell'attività didattica
- INF0008
- Docenti
- Fabio Ciravegna (Titolare)
Ferruccio Damiani (Titolare) - Corso di studi
- [008515] Laurea magistrale in informatica
- Anno
- 1° anno 2° anno
- Periodo didattico
- Secondo semestre
- Tipologia
- Caratterizzante
- Crediti/Valenza
- 6 CFU - Numero di ore - Number of hours: 24 (in aula) + 24 (in laboratorio)
- SSD dell'attività didattica
- INF/01 - informatica
- Modalità di erogazione
- Tradizionale
- Lingua di insegnamento
- Italiano
- Modalità di frequenza
- Facoltativa
- Tipologia d'esame
- Scritto più orale obbligatorio
- Prerequisiti
- Agli studenti è richiesto di padroneggiare i concetti e le nozioni di base presentati nella Laurea in Informatica dell’Università di Torino o in altra laurea che soddisfi i requisiti per ottenere la certificazione GRIN (denominata “Bollino GRIN”) . In particolare:
- programmazione (buone abilità di programmazione nel paradigma orientato agli oggetti);
- algoritmi e strutture dati;
- architettura degli elaboratori;
- sistemi operativi;
- basi di dati;
- linguaggi formali e traduttori;
- ingegneria del software;
- interazione uomo-macchina e sviluppo per il web.
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Nessuno.
Knowledge of the basic concepts and notions introduced in the modules of the “Laurea in Informatica” at the University of Torino or in modules of any degree satisfying the GRIN certification requirements(called “bollino GRIN”). In particular:- Programming (good object-oriented programming skills);
- Algorithms and data structures;
- Computer architectures;
- Operating systems;
- Databases;
- Formal languages and compilers;
- Software engineering;
- Human-computer interaction and web development.
Preparatory courses (providing the expected entry skills): None. . - Oggetto:
Sommario insegnamento
- Oggetto:
Obiettivi formativi
L'insegnamento concorre al raggiungimento degli obiettivi formativi del Corso di Laurea Magistrale in Informatica fornendo una conoscenza di base dei principi di progettazione e dei fondamenti dello sviluppo delle applicazioni mobili, presentando lo sviluppo su piattaforma Android, e introducendo alcuni aspetti relativi allo sviluppo su piattaforma iOS e cross-platform. Viene inoltre presentato il paradigma “aggregate programming” per programmare sistemi distribuiti (come ad es. insiemi di dispositivi mobili) specificando il comportamento globale e derivando automaticamente i comportamenti locali.The module contributes to the educational objectives of the "Laurea Magistrale in Informatica" programme by providing a basic knowledge of design principles and foundations of mobile applications development (i) in native Android (level: in depth); (ii) in native iOS (superficial) (iii) cross-platform environments (medium depth). Moreover, it presents the paradigm Aggregate Programming for programming distributed systems (like, e.g., set of mobile devices). Aggregate Programming automatically derives the individual device-specific behaviours from the declared system behaviour.- Oggetto:
Risultati dell'apprendimento attesi
Conoscenza e capacità di comprensione
Al termine dell'insegnamento lo studente avrà acquisito una conoscenza di base dei principi di progettazione e dei fondamenti dello sviluppo delle applicazioni mobili e possiederà una conoscenza di base del paradigma "aggregate programming".
Capacità di applicare conoscenza e comprensione
Al termine dell'insegnamento lo studente sarà in grado di:
- progettare e sviluppare applicazioni mobili su piattaforma Android;
- progettare e sviluppare semplici applicazioni mobili su piattaforma iOS;
- progettare e sviluppare semplici applicazioni mobili cross-platform;
- scrivere semplici programmi in un linguaggio che supporti il paradigma "aggregate programming".
Autonomia di giudizio
Al termine dell'insegnamento lo studente sarà in grado di:
- Analizzare in autonomia, a partire dai requsiti, se una data applicazione mobile si presta ad essere realizzata con un approccio cross-platform o se richiede uno sviluppo nativo.
- Analizzare in autonomia, a partire dai requisiti, se un'applicazione mobile potrebbe beneficiare dell'utilizzo di tecniche proprie del paradigma "aggregate programming".
- Motivare e argomentare le scelte progettuali per la realizzazione di una applicazione mobile.
Abilità comunicative
Al termine dell'insegnamento lo studente sarà in grado di esporre, in forma scritta e orale, una relazione tecnica che spieghi e motivi le scelte progettuali dello studio di un caso.
Capacità di apprendimento
Al termine dell'insegnamento lo studente che desidera mantenersi al passo con la rapida evoluzione della materia oggetto di studio sarà in grado di apprendere nuovi concetti e tecnologie a man mano che emergeranno.
Knowledge and Understanding
At the end of the module, the student will reach a level of basic knowledge of (i) the basic principles of designing and implementing mobile applications. Moreover, they will have a basic knowledge of the "aggregate programming" paradigm.
Ability to apply knowledge and understanding
At the end of the module, the student will be able to:
- design and develop Android mobile apps
- design and develop very simple iOS mobile apps
- design and develop mobile apps suing cross-platform envioronments.
- design and write simple programs in a language supporting aggregate programming
Independence
At the end of the module the student will be able to:
- Analyse if - given some requirements - a given mobile app is implementable using a cross platform approach or if a native implementation is required
- Analyse if - given some requirements - a given mobile app could benefit of an approach based on aggregate programming
- Motivate and document their design choices taken during the development of a mobile app.
Ability to communicate
At the end of the module, the student will be able to provide a technical presentation describing the technical choices behind the development of an application both in oral and written form
Learning ability
At the end of the module, the students who will need to keep up with the rapid development in mobile computing will be able to develop their knowedge and understanding of the future developments while they emerge.
- Oggetto:
Modalità di insegnamento
L'insegnamento è strutturato in 24 ore di lezione frontali e 24 ore di attività in laboratorio, che seguono il programma riportato sopra, integrate da casi di studio e da esercitazioni volte ad illustrare l’applicazione pratica dei concetti appena studiati. La frequenza è facoltativa, fortemente consigliata, e la prova finale sarà uguale per frequentanti e non.
24 hours of lectures and 24 hours of lab based teaching will be integrated by case studies and exercises aimed at demonstrating the topics covered during the module. Attendance is not formally required, although expected. The examination will not differ in case of non attendance.
- Oggetto:
Modalità di verifica dell'apprendimento
E' obbligatoria l'iscrizione all'ambiente di e-learning Moodle associato all'insegnamento, dove gli studenti troveranno forum di discussione, materiale didattico e compiti assegnati. Gli studenti si organizzeranno in gruppi (costituti di norma da 1 o 2 persone, al massimo da 3). Durante il corso ciascun gruppo negozierà con il docente un progetto di esame (volto alla realizzazione di una applicazione mobile):
- ogni gruppo dovrà proporre un’idea;
- industrie e/o docenti potrebbero presentare le loro esigenze
- la negoziazione dovrà, di norma, avere termine prima della fine del corso e avrà validità per un anno solare a partire dall’inizio del corso.
L’esame verterà sul progetto realizzato:
- Prima dell’esame (di norma, almeno due settimane prima) il gruppo dovrà consegnare al docente una relazione che illustri il progetto e contenga la documentazione dell’applicazione mobile realizzata.
- Durante l’esame ogni gruppo dovrà:
- fare una breve presentazione (circa 20 minuti, usando delle slides) per introdurre l’applicazione mobile realizzata e illustrare (motivandole in modo adeguato) le scelte progettuali effettuate,
- presentare un dimostratore (su un dispositivo reale o su un simulatore),
- discutere il progetto con il docente (durante la discussione ciascun componente del gruppo dovrà dimostrare di padroneggiare i concetti e le nozioni illustrati dal materiale didattico indicato sul sito Moodle del corso).
Il voto finale sarà stabilito considerando la valutazione di:
- relazione che illustra progetto e presentazione del progetto all’esame---peso 30%;
- implementazione del progetto (completo delle sue parti secondo quanto descritto nella relazione) e presentazione del dimostratore all’esame---peso 30%;
- colloquio (discussione del progetto e domande sugli argomenti trattati nel corso)---peso 40%.
L’esame farà riferimento al materiale didattico indicato sul sito Moodle della più recente edizione del corso.
The student is required to register for the e-learning platform Moodle and to use the specific module page. The page includes a discussion forum, announcements and the programmae of the course, inclusive of slides and exercise. The students will have to self-organise in groups of 1, 2 or max 3 people.
During the semester, each group will have to negotiate a final exam project with the lecturer. The project will concern the development of a suitable mobile app:
- the group will have to provide an initial idea
- some companies or academics may provide ideas and proposals
- teh negotiation will normally conclude before the end of the module. The maximun validity of the project approval is the end of the current solar year.
The exam will concentrate on the submitted project:
- Before the exam (min two weeks before the exam date), the group will have to submit a report describing and documenting the project and in particular the mobile ap developed.
- During the exam each group will have to:
- Present the project (about 20 minutes using slides), its motivations and the underlying design choices.
- present a demonstrator (on a real or emulated device)
- discuss the projec with the lecturer. Each grup member will have to demonstrate a clear understanding of the concepts and topics covered by the module as presented on the Moodle page.
The final mark will coinsider the following:
- The report describign the app and the exam presentation (30%)
- implementation of the project and its presentation (30%)
- oral examination (project discussion, and questions on the topics covered in the module - 40%). The topics covered are those described on the Moodle page
- Oggetto:
Programma
- Introduzione alla progettazione di applicazioni mobili:
- panoramica;
- principali attività di sviluppo;
- opzioni si sviluppo.
- Sviluppo di applicazioni mobili su piattaforma Android:
- costruire la prima app;
- interfacce utente: layout;
- attività e intenti;
- interfacce utente: menù,...;
- considerare più dispositivi;
- interfacce utente: fragment;
- memorizzazione dei dati;
- rete;
- "content provider";
- threads e servizi;
- servizi di sistema.
- Piattaforme "Backend-as-a-Service" (cenni):
- introduzione a Firebase.
- Sviluppo di applicazioni mobili su piattaforma iOS (cenni):
- presentazione delle principali differenze concettuali rispetto ad Android;
- presentazione degli aspetti peculiari del linguaggio Swift.
- Introduzione allo sviluppo cross-platform di applicazioni mobili:
- panoramica delle opzioni di sviluppo cross-platform;
- introduzione a Flutter;
- introduzione React Native.
- Introduzione al paradigma “aggregate programming”:
- computazione distribuita e campi computazionali;
- formalizzazione dell'approccio: modello e calcolo;
- “aggregate programming” toolchain: linguaggi di dominio specifico e simulatori.
- Introduction to the design of mobile applications:
- overview;
- main development activities;
- development options.
- Mobile applications development on the Android Platform:
- building your first app;
- user interfaces: layouts;
- Activities and Intents;
- user interfaces: menus, ...;
- multiple devices;
- user interfaces: fragments;
- data storage;
- network;
- content providers;
- threads and Services;
- system services.
- Backend-as-a-Service platforms (elements):
- introduction to Firebase.
- Mobile application development on the iOS platform (elements):
- main conceptual differences with respect to Android;
- peculiar aspects of the Swift programming language.
- Introduction to mobile application cross-platform development:
- overview of the cross-platform development options;
- introduction to Flutter;
- introduction to React Native.
- Introduction to the aggregate programming paradigm:
- distributed computation and computational fields;
- formalization of the approach: model and calculus;
- aggregate programming toolchain: domain-specific languages and simulators.
- Introduzione alla progettazione di applicazioni mobili:
Testi consigliati e bibliografia
- Oggetto: