Questo insegnamento si propone di completare la formazione dello studente nel campo delle tecnologie ICT affrontando aspetti fondamentali per la creazione di soluzioni informatiche moderne nella prospettiva di una "trasformazione digitale" dell'azienda, quali la loro capacità di adattarsi a dispositivi mobili e la possibilità fare ricorso a risorse di archiviazione ed elaborazione distribuite e disponibili on-demand secondo i paradigmi del cloud computing.
Per quanto riguarda l’ambito correlato alla progettazione e realizzazione di applicazioni per dispositivi mobili, verranno studiati gli aspetti relativi all’esistenza di vincoli connessi alle caratteristiche peculiari dei dispositivi, alla disponibilità di soluzioni alternative per l’interazione con l’utente, alla possibilità di sfruttare informazioni di localizzazione ed alle criticità associate alla gestione delle basi di dati e delle comunicazioni di rete.
Verranno considerate tecnologie per la realizzazione di applicazioni mobili native (es. Android ed iOS) e multipiattaforma (attraverso strumenti basati sul Web, quali Apache Cordova ed Adobe PhoneGap, oppure ambienti orientati al riutilizzo del codice, come Microsoft Xamarin), per smartphone e tablet, ma anche per dispositivi indossabili, domestici, ecc.
Con riferimento ai contenuti correlati alle architetture distribuite, attraverso la realizzazione di applicazioni dimostrative lo studente potrà familiarizzare con le soluzioni offerte dalle principali piattaforme cloud quali, ad esempio, Microsoft Azure, Amazon Web Services e Google Cloud Platform.
Verranno in particolare esplorate le opportunità offerte in termini di servizi per, tra gli altri, la virtualizzazione e la gestione dei dati, la creazione di architetture basate su blockchain, la realizzazione di agenti conversazionali e bot, e l’utilizzo di tecnologie di intelligenza artificiale e machine learning per il supporto alle decisioni, l’elaborazione del linguaggio naturale, il riconoscimento del parlato e la sintesi vocale, la sentiment/social media analysis e la visione artificiale.
This course aims at completing the student’s knowledge about ICT technologies by looking at some important topics that are crucial for the design of advanced software applications in the perspective of a "digital transformation" of today's companies, such as their ability to be deployed on mobile devices and the possibility to exploit distributed storage and processing resources that can be accessed on-demand according to the paradigms of cloud computing.
With respect to the context related to the design and implementation of applications targeted to mobile devices, aspects pertaining to the existence of design constraints linked to the specificities of the considered devices, to the availability of alternative solutions for user interaction and to critical aspects associated with the management of databases and network communications will be specifically considered.
The course will consider technologies for the implementation of native mobile applications (e.g., Android and IoS) as well as cross-platform applications (through the use of tools based on the Web, like Apache Cordova and Adobe PhoneGap, or frameworks oriented to code re-use, like Microsoft Xamarin), for smartphones and tablets, as well as for wearable and home devices, etc.
Concerning content related to distributed systems, through the design and development of demonstration applications, the student will get familiar with solutions offered by the main cloud eco-systems like, e.g., Microsoft Azure, Amazon Web Services and Google Cloud Platform.
The course will explore in particular the opportunities offered in terms of services for virtualization and data management, the creation of architectures based on blockchain, the implementation of conversational agents and bot as well as the use of artificial intelligence and machine learning technologies for decision support, natural language interpretation, speech recognition and voice synthesis, sentiment/social media analysis and computer vision, among others.
- Conoscenza dei principi basilari della programmazione su dispositivi mobili. Capacità di applicare tali principi alla progettazione di soluzioni applicative concrete per dispositivi diversi.
- Conoscenza degli approcci di virtualizzazione e delle principali piattaforme di archiviazione ed elaborazione in cloud. Capacità di progettare soluzioni software basate sui servizi offerti dalle suddette piattaforme, ed integrazione nell’ambito di casi di studio concreti.
- Knowledge of the basic principles of computer programming on mobile devices. Ability to apply these principles to the design of concrete software solutions on different mobile platforms.
- Knowledge of virtualization approaches and of the main storage and computing cloud platforms available. Ability to design software solutions based on the services offered by the above platforms, and to integrate them in the context of practical study cases.
Basi di programmazione e delle tecnologie del Web.
Basics of programming and Web technologies.
Programma di massima delle ore di lezione:
- Programmazione su dispositivi mobili, tecnologie abilitanti
- Progettazione e realizzazione di applicazioni native
- Introduzione ad Android, confronto con altre piattaforme
- Il linguaggio Java, dal mondo desktop a quello mobile
- Interazione con l’utente, definizione dell’interfaccia grafica
- Gestione dei dati
- Accesso a servizi esterni al dispositivo (es. mappe, localizzazione, notifiche ed altre API)
- Realizzazione di applicazioni multi-piattaforma
- Tecnologie cloud, paradigmi PaaS, SaaS e IaaS
- Tecnologie per la virtualizzazione
- Servizi Web e piattaforme disponibili (Microsoft, Amazon, Google)
- Soluzioni blockchain
- Servizi cloud per la realizzazione di agenti conversazionali e bot
- Servizi cloud basati su AI e machine learning per il supporto alle decisioni
- Elaborazione del testo/del linguaggio naturale, riconoscimento e sintesi del parlato
- Strumenti per la social e la sentiment analysis
- Servizi base per la visione artificiale
The hours of in-class lessons will be tentatively organized as follows:
- Programming on mobile devices, enabling technologies
- Designing and developing native mobile applications
- Introduction to Android, comparison with other platforms
- Java, from the desktop to the mobile world
- Dealing with user interaction, defining the graphics user interface
- Managing local and external data
- Access to external services (e.g., maps, localization, notifications, etc.)
- Developing cross-platform applications
- Cloud technologies, PaaS, SaaS and IaaS paradigms
- Virtualization technologies
- Web services and available platforms (Microsoft, Amazon, Google)
- Blockchain solutions
- Cloud services for the creation of conversational agents and bots
- Cloud services based on AI and machine learning for decision support
- Text/Natural language processing, speech recognition and synthesis
- Tools for social and sentiment analysis
- Basic services for computer vision
Le esercitazioni di laboratorio mirano a sperimentare le funzionalità principali degli strumenti per la creazione di applicazioni per dispositivi mobili considerati e a supportare lo sviluppo delle capacità relative alla risoluzione di problemi di progettazione e codifica con questi strumenti. Le esercitazione includono, inoltre, attività volte a supportare la comprensione delle strategie di configurazione delle piattaforme cloud considerate ed alla realizzazione di servizi sperimentali, e prevedono lo svolgimento di esercizi specifici di approfondimento delle parti più teoriche, propedeutici alla predisposizione del progetto oggetto dell’esame.
Laboratory sessions will let students experiment the main functionalities of the considered tools for the creation of mobile applications, and develop problem-solving abilities related to the design and coding of applications with those tools. They will encompass also activities aimed at supporting the understanding of the configuration strategies to be adopted for the considered cloud platforms as well as at enabling the development of experimental services relying on such platforms, and will be based on specific exercises that will allow students to improve their understanding of more theoretical contents and will prepare them for the design activities requested by the exam.
Materiale utilizzato dal docente in aula ed in laboratorio (lucidi, dispense, progetti software, tutorial, ecc.), reso disponibile in formato elettronico tramite il Portale della Didattica. Verranno inoltre resi disponibili gli screencast delle lezioni al termine di ciascuna di essa. All'inizio e durante il corso potranno essere suggeriti testi specifici.
Material used by the teacher in the classroom and in the laboratory (slides, handouts, software projects, tutorials, etc.), which is made available on the Portale della Didattica. Screencasts will be also made available at the end of each lesson. At the beginning and during the course specific books may be suggested.
Modalità di esame: Elaborato scritto individuale; Prova scritta su carta con videosorveglianza dei docenti; Elaborato progettuale individuale;
L’esame consiste in una prova scritta della durata indicativa di 2 ore che verte su tutto il programma. La prova consiste nella progettazione di una applicazione per dispositivi mobili in grado di interagire in maniera efficace con l’utente e con il contesto, oltre che di accedere ad informazioni e servizi cloud già disponibili o definiti ex novo per rispondere ai requisiti forniti. Durante la prova, svolta senza poter accedere ad un calcolatore per attività di programmazione o simili, lo studente può utilizzare tutto il materiale predisposto dal docente oltre a libri di testo ed appunti.
La prova scritta può essere interamente sostituita con un lavoro individuale o di gruppo che preveda la realizzazione di un’applicazione concordata con il docente ed un eventuale attore esterno (azienda, laboratorio di ricerca, ecc.) al fine di risolvere un particolare problema e/o rispondere ad una determinata esigenza. Il lavoro può essere consegnato e discusso in ogni sessione d’esame. Sia nel caso di prova scritta che di lavoro individuale / di gruppo, la soluzione proposta verrà valutata in base alla bontà della risposta fornita ai requisiti iniziali (misurata in termini di correttezza e completezza) con riferimento al peso dei diversi argomenti trattati nel programma.
Exam: Individual essay; Paper-based written test with video surveillance of the teaching staff; Individual project;
The exam consists of a written test about all topics in the syllabus. Duration is approximately 2 hours. The written exam requires the student to design a mobile application capable to interact in an effective way with the user and the surrounding context, as well as of accessing information and cloud services (either available or developed ad-hoc) in order to respond to requirements provided. During the test, it is not possible to use a computer to do programming or similar activities, and the student can use all the material developed during the course by the teacher as well as books and notes.
The student can decide to substitute entirely the written exam with an individual or a team work aimed at the development of an application agreed with the teacher and a possible external subject (company, research laboratory, etc.) for solving a specific problem and/or address a given need. The work can be delivered and discussed in any exam session. Both in the case of written exam and of individual / team work, the solution proposed by the student will be assessed based on the quality (measured in terms of correctness and completeness) of the answer provided to initial requirements with reference to the weight of the various topics in the syllabus.
Modalità di esame: Prova scritta (in aula); Prova scritta su carta con videosorveglianza dei docenti; Elaborato progettuale individuale; Elaborato progettuale in gruppo;
L’esame consiste in una prova scritta della durata indicativa di 2 ore che verte su tutto il programma. La prova consiste nella progettazione di una applicazione per dispositivi mobili in grado di interagire in maniera efficace con l’utente e con il contesto, oltre che di accedere ad informazioni e servizi cloud già disponibili o definiti ex novo per rispondere ai requisiti forniti. Durante la prova, svolta senza poter accedere ad un calcolatore per attività di programmazione o simili, lo studente può utilizzare tutto il materiale predisposto dal docente oltre a libri di testo ed appunti.
La prova scritta può essere interamente sostituita con un lavoro individuale o di gruppo che preveda la realizzazione di un’applicazione concordata con il docente ed un eventuale attore esterno (azienda, laboratorio di ricerca, ecc.) al fine di risolvere un particolare problema e/o rispondere ad una determinata esigenza. Il lavoro può essere consegnato e discusso in ogni sessione d’esame. Sia nel caso di prova scritta che di lavoro individuale / di gruppo, la soluzione proposta verrà valutata in base alla bontà della risposta fornita ai requisiti iniziali (misurata in termini di correttezza e completezza) con riferimento al peso dei diversi argomenti trattati nel programma.
Exam: Written test; Paper-based written test with video surveillance of the teaching staff; Individual project; Group project;
The exam consists of a written test about all topics in the syllabus. Duration is approximately 2 hours. The written exam requires the student to design a mobile application capable to interact in an effective way with the user and the surrounding context, as well as of accessing information and cloud services (either available or developed ad-hoc) in order to respond to requirements provided. During the test, it is not possible to use a computer to do programming or similar activities, and the student can use all the material developed during the course by the teacher as well as books and notes.
The student can decide to substitute entirely the written exam with an individual or a team work aimed at the development of an application agreed with the teacher and a possible external subject (company, research laboratory, etc.) for solving a specific problem and/or address a given need. The work can be delivered and discussed in any exam session. Both in the case of written exam and of individual / team work, the solution proposed by the student will be assessed based on the quality (measured in terms of correctness and completeness) of the answer provided to initial requirements with reference to the weight of the various topics in the syllabus.