Politecnico di Torino | |||||||||||||||||
Anno Accademico 2017/18 | |||||||||||||||||
01QWRBH, 01QWRMV Programming for IoT applications |
|||||||||||||||||
Corso di Laurea Magistrale in Ict For Smart Societies (Ict Per La Societa' Del Futuro) - Torino Corso di Laurea Magistrale in Ingegneria Biomedica - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
Presentazione
Internet of Things indica una varietà di dispositivi collegati tramite Internet, inclusi dispositivi wearable, sensori installati su edifici, impianti industriali e di produzione e distribuzione energetica e in generale su sistemi cyber-physical. Le applicazioni sono disparate, dai distretti per il monitoraggio energetico o la sorveglianza, nell’ambiente per il monitoraggio e il controllo di fenomeni naturali, all’interno dei mezzi di trasporto per la gestione del traffico ed infine all’interno di dispositivi medicali.
In questo contesto, lo scopo del corso è far acquisire allo studente capacità di programmare dispositivi embedded connessi in rete utilizzando paradigmi di programmazione distribuita, parallela e object oriented. Lo scopo finale sarà la capacità di programmazione nel campo Internet-of-Things e quello dei dispositivi Cyber-Physical. Dovranno essere acquisite capacità di implementazione e utilizzo di strumenti web services e middleware e relativi protocolli (SOAP, RestFULL). Lo studente dovrà acquisire inoltre la capacità di programmare secondo paradigmi publish/subscribe. Lo studente approfondirà i concetti e gli strumenti per l’interoperabilità tra dispositivi eterogenei, i protocolli Machine-to-Machine, i sistemi operativi orientati agli smart objects e la programmazione con constraints real-time e di consumo energetico. Infine, verranno trattati aspetti relativi al processing dei dati tramite tecniche di machine learning, e in particolare reti neurali ricorrenti adeguate per l'elaborazione di serie temporali. Durante il corso verranno presentati casi di studio relativi a sistemi di monitoraggio industriale nell’ambito smart cities e smart factory e include una serie di esercitazioni di laboratorio dove lo studente implementerà i concetti appresi programmando dispositivi networked embedded equipaggiati con sensori e attuatori e consentendo l’interazione remota con questi dispositivi. |
Risultati di apprendimento attesi
Il corso ha l’obiettivo di fornire agli studenti la conoscenza della programmazione object oriented e degli strumenti per la sua implementazione in Python. Conoscenza dei protocolli per l’implementazione dei paradigmi di comunicazione web service oriented. Conoscenza dei principali strumenti per la programmazione in ambiente real-time, in presenza di sensori e attuatori. Strumenti di analisi dati da sensori, tecniche di machine learning per l’analisi dati da sensori.
Lo studente dovrà maturare la capacità di progettare una sistema IoT (basato su microservizi) per un dato contesto applicativo, a partire da collezionamento dati, organizzazione, analisi, visualizzazione e interazione con l'utente |
Prerequisiti / Conoscenze pregresse
Conoscenza degli elementi di base della programmazione e architetture dei sistemi di calcolo, che vengono fornite nel corso di Informatica al primo anno del corso di laurea in Ingegneria.
|
Programma
Introduzione alla programmazione object oriented e Python (6 ore)
Formati XML, JSON Dispositivi IoT e programmazione web-based IoT (3 ore) Programmazione con Web Services RestFULL Web Services (GET, PUT, POST, DELETE methods) Microservices e Middleware programming (3 ore) Middlewares Dockers IoT communication protocols e piattaforme IoT (9 ore) Publish/subscribe communication paradigms MQTT, COAP Thingspeak, Amazon, IBM Bluemix IoT data processing (9 ore) Introduzione alle techniche di machine learning Analisi di serie temporali e stream processing Recurrent neural networks Laboratorio (30 ore) Programmazione dispositivi e piattaforme IoT (using RaspberryPI o simili) |
Organizzazione dell'insegnamento
Il corso è organizzato in una serie di lezioni frontali (30 ore) e in moduli di laboratorio (30 ore in totale). I laboratori saranno in parte esercitazioni guidate tramite le quali lo studente familiarizzerà con gli strumenti di programmazione imparati a lezione e in parte saranno orientate allo sviluppo di un progetto che gruppi di studenti (di minimo 3 elementi) porteranno avanti durante il corso e che porteranno all’esame come parte della valutazione.
|
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
Materiale didattico:
- Lecture notes fornite dal docente - Articoli scientifici forniti dal docente - Materiale SW e HW per i laboratori |
Criteri, regole e procedure per l'esame
Esame scritto:
- Domande a risposta multipla su tutto il programma svolto durante le lezioni frontali (valore complessivo: 12/30) Discussione del progetto: - Presentazione orale sul progetto svolto durante il corso (valore complessivo 18/30) |
Orario delle lezioni |
Statistiche superamento esami |
|