Vai al contenuto principale
Oggetto:
Oggetto:

Programmazione per Dispositivi Mobili

Oggetto:

Mobile Device Programming

Oggetto:

Anno accademico 2023/2024

Codice attività didattica
INF0008
Docenti
Fabio Ciravegna (Titolare)
Ferruccio Damiani (Titolare)
Corso di studio
[008515] Laurea magistrale in informatica
Anno
1° anno, 2° anno
Periodo
Secondo semestre
Tipologia
Caratterizzante
Crediti/Valenza
6 CFU - Numero di ore - Number of hours: 24 (in aula) + 24 (in laboratorio)
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto più orale obbligatorio
Tipologia unità didattica
corso
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:

    Avvisi

    DSA o Disabilità: Sostegno e Accoglienza in UniTO e supporto in sede di Esame
    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/a studente/ssa 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 o studentessa 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 o studentessa  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 o studentessa  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:

    Programma

    1. Introduzione alla progettazione di applicazioni mobili:
      • panoramica;
      • principali attività di sviluppo;
      • opzioni si sviluppo.
    2. 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.
    3. Piattaforme "Backend-as-a-Service" (cenni):
      • introduzione a Firebase.
    4. Sviluppo di applicazioni mobili su piattaforma iOS (cenni):
      • presentazione delle principali differenze concettuali rispetto ad Android;
      • presentazione degli aspetti peculiari del linguaggio Swift.
    5. Introduzione allo sviluppo cross-platform di applicazioni mobili:
      • panoramica delle opzioni di sviluppo cross-platform;
      • introduzione a Flutter;
      • introduzione React Native.
    6. 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.

    1. Introduction to the design of mobile applications:
      • overview;
      • main development activities;
      • development options.
    2. 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.
    3. Backend-as-a-Service platforms (elements):
      • introduction to Firebase.
    4. Mobile application development on the iOS platform (elements):
      • main conceptual differences with respect to Android;
      • peculiar aspects of the Swift programming language.
    5. Introduction to mobile application cross-platform development:
      • overview of the cross-platform development options;
      • introduction to Flutter;
      • introduction to React Native.
    6. 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.
    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 le studentesse e gli studenti troveranno forum di discussione, materiale didattico e compiti assegnati. Gli studenti e le studentesse si organizzeranno in gruppi (costituti di norma da 1 o 2 persone, al massimo da 3). Durante il semestre 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 dell'insegnamento e avrà validità per un anno solare a partire dall’inizio del semestre.

    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).

    Il voto finale sarà stabilito considerando la valutazione di:

    1. relazione che illustra progetto e presentazione del progetto all’esame---peso 30%; 
    2. implementazione del progetto (completo delle sue parti secondo quanto descritto nella relazione) e presentazione del dimostratore all’esame---peso 30%;
    3. 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'insegnamento.

     

    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:

    1. The report describign the app and the exam presentation (30%)
    2. implementation of the project and its presentation (30%)
    3. oral examination (project discussion, and questions on the topics covered in the module - 40%). The topics covered are those described on the Moodle page

    Testi consigliati e bibliografia



    Oggetto:
    Ultimo aggiornamento: 11/09/2023 08:45
    Location: https://magistrale.informatica.unito.it/robots.html
    Non cliccare qui!