L'Internet of Things (IoT) riguarda i sistemi in cui i dispositivi fisici sono connessi a Internet. L’IoT è fondamentale per l’informatica, dato che si prevede che le connessioni globali dei dispositivi IoT continueranno a crescere per molti anni a venire. L'insegnamento è incentrato sulle attività di progettazione e implementazione di sistemi IoT, e copre tutti i loro livelli principali (edge, trasporto e informatica): sensori, attuatori e programmazione di dispositivi; protocolli IoT; programmazione guidata dagli eventi e cloud computing.
Apprendere metodi, protocolli, architetture e piattaforme per lo sviluppo di applicazioni distribuite e mobili per l'Internet delle Cose, inclusi protocolli machine-to-machine, algoritmi distribuiti per la tolleranza ai guasti e la replica, piattaforme basate su architetture orientate ai servizi, sistemi operativi embedded, dati in tempo reale e streaming, geolocalizzazione e framework collaborativi.
Al termine dell'insegnamento, lo studente/la studentessa sarà in grado di
applicare i concetti base della programmazione event-driven allo sviluppo di sistemi IoT padroneggiare nozioni base su sensori/attuatori, microcontrollori e programmazione dei dispositivi gestire i protocolli IoT più utili e progettare e implementare un'architettura IoT partendo da requisiti informali utilizzare una piattaforma IoT gestire le relazioni sociali all'interno di un piccolo team di studenti con un atteggiamento collaborativo e una comunicazione costruttiva in diversi ambienti prendere decisioni indipendenti, avere un atteggiamento collaborativo e gestire risorse umane e materiali e coordinamento durante la progettazione e lo sviluppo di un sistema IoT non banale
Programmazione Object-Oriented Programmazione e sistemi concorrenti e distribuiti Sistemi operativi e reti
Lezioni frontali in aula dedicate alla teoria e alle demo.
Esercizi individuali di programmazione event-driven e IoT in Node,js.
Sviluppo in team di un progetto finale.
Gli esercizi di programmazione e il progetto finale sono sviluppati con il sistema collaborativo di controllo delle versioni GitHub Classroom per migliorare l'interazione tra studenti e docenti
JavaScript
Node.js
Device Programming
- sensori e attuatori
- Physical Web con Estimote Beacon
- Raspberry
-SensorLab per Android: Dashboard per dati sensoriURL
-Javascript per Mobile Apps: React Native
-sviluppo su Arduino
-Low.js: Node.js per microcontrollersURL
-Microbit, Javascript e Micropython
IoT Application Layer: reti e protocolli
-Protocolli di rete: BLE, 6LowPan, ZigBee, ThreadFile
-Physical Web in Node.js: Noble, Express and ClusterFolder
-Protocolli in Node.js: COAP, MQTT, Websocket in Node.js
-Node.js Serverside: Scheduler con Immediate and NextTick, Fork and ClusterFile
-Smart Cities, IoT and data interoperability
Piattaforme IoT
- Node-RED
- ThingWorx
- Ubidots
Disponibili sul sito del corso del portale Aulaweb Unige.
Ricevimento: Su appuntamento richiesto per email o con Teams
Ricevimento: Su appuntamento, in presenza o via Teams
GIORGIO DELZANNO (Presidente)
DAVIDE ANCONA (Presidente Supplente)
In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica: https://corsi.unige.it/corsi/11964/studenti-orario
Esame orale e discussione progetto.
Indicazioni per studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali sono disponibili a partire da https://corsi.unige.it/corsi/11964/studenti-disabilita-dsa
Gli esercizi individuali di programmazione servono a valutare la capacità di applicazione dei concetti base della programmazione guidata dagli eventi e l'apprendimento dei protocolli IoT più utili. La valutazione si basa sulla correttezza, efficienza e leggibilità del codice.
Il progetto finale ha l'obiettivo di verificare la capacità
di prendere decisioni indipendenti riguardo alla scelta di sensori/attuatori e alla programmazione di dispositivi di progettare e implementare un'architettura IoT partendo da requisiti informali di utilizzare una piattaforma IoT.
La valutazione si basa sull'idoneità dell'architettura scelta, sull'efficacia, scalabilità, usabilità e correttezza del sistema implementato.
La presentazione e discussione del progetto ha lo scopo di verificare le attitudini collaborative degli studenti nell'ideare e sviluppare un progetto all'interno di un piccolo team. La valutazione si basa sul livello di comprensione del funzionamento complessivo e dei dettagli tecnici del progetto.
Per ulteriori informazioni, consultare il modulo Aulaweb dell'insegnamento o contattare il docente.