CODICE 90524 ANNO ACCADEMICO 2024/2025 CFU 9 cfu anno 1 COMPUTER SCIENCE 10852 (LM-18) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Inglese SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE 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. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Learning methods, protocols, architectures, and platforms for the development of distributed and mobile applications for the Internet of Things, including machine to machine protocols, distributed algorithms for fault tolerance and replication, service oriented architectures platforms, embedded operating systems, real time and streaming data, geolocation, and collaborative framework. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO 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 PREREQUISITI Programmazione Object-Oriented Programmazione e sistemi concorrenti e distribuiti Sistemi operativi e reti MODALITA' DIDATTICHE 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 PROGRAMMA/CONTENUTO 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 TESTI/BIBLIOGRAFIA Disponibili sul sito del corso del portale Aulaweb Unige. DOCENTI E COMMISSIONI DAVIDE ANCONA Ricevimento: Su appuntamento tramite email o Teams GIORGIO DELZANNO Ricevimento: Su appuntamento in presenza o Teams Commissione d'esame GIORGIO DELZANNO (Presidente) DANIELE D'AGOSTINO DAVIDE ANCONA (Presidente Supplente) LEZIONI INIZIO LEZIONI In accordo con il calendario approvato dal Consiglio di Corso di Laurea di Informatica. Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME Esame orale e discussione progetto MODALITA' DI ACCERTAMENTO 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. Agenda 2030 Città e comunità sostenibili