- Docente: Marco Di Felice
- Credits: 6
- SSD: INFO-01/A
- Language: English
- Moduli: Luciano Bononi (Modulo 1) Marco Di Felice (Modulo 2)
- Teaching Mode: In-person learning (entirely or partially) In-person learning (entirely or partially) (Modulo 1); In-person learning (entirely or partially) (Modulo 2)
- Campus: Bologna
-
Corso:
Second cycle degree programme (LM) in
Computer Science (cod. 6698)
Also valid for Second cycle degree programme (LM) in Artificial Intelligence (cod. 6700)
Second cycle degree programme (LM) in Electronic Engineering (cod. 6716)
Learning outcomes
At the end of the course, the student understands the main architectures and methodologies underlying the Internet of Things (IoT), in particular, wireless Machine-to-Machine communication technologies (M2M), IoT network protocols and solutions, software interoperability solutions based on the Web of Things approach, and the techniques and platforms for the management and analysis of sensors' data. Furthermore, the student is able to design and implement IoT pipelines composed of edge devices capable of sensing the environment, cloud/fog platforms for scalable management of IoT data, and software for the analysis and forecasting of IoT data, by using statistical and machine learning techniques. Students will be provided with illustration and experimentation examples of IoT solutions to facilitate the integration of heterogeneous data, devices and platforms based on Web of Things approaches, and emerging computation models (edge/distributed/cloud/…) related to the analysis and valorisation of IoT data. Finally, emerging use cases and applications of IoT proof of concepts will be discussed in various domains.
Course contents
The course introduces the enabling technologies, programming languages, communication protocols, software architectures, and applications related to the emerging paradigm of the Internet of Things (IoT). In particular, the components of a typical IoT system are presented following a data-oriented approach, from data generation and processing on embedded systems and microcontrollers, through wireless transmission over WSAN/WLAN/WPAN networks, to data acquisition and storage on remote platforms, and finally to knowledge extraction using Artificial Intelligence (AI) techniques and their integration into edge computing environments through Edge AI and TinyML paradigms.
The course covers the following topics.
Introduction to IoT Systems
- Definitions, application domains, and enabling technologies
IoT Components: Communication and Networking
- Sensors and actuators; fundamentals of electronic circuit design (overview); sensing strategies and data acquisition.
- Wireless communication technologies and encoding techniques for IoT.
- Machine-to-Machine (M2M) communication: enabling wireless technologies for WPAN (e.g., Bluetooth Low Energy, IEEE 802.15.4, Z-Wave), WLAN, and LPWAN (e.g., LoRa, LoRaWAN).
- Network architectures and routing protocols (6LoWPAN, RPL).
IoT Components: Embedded Systems
- Embedded systems: introduction and architectural patterns.
- Bare-metal and framework-based approaches (e.g., Arduino).
- Real-Time Operating Systems (RTOS), including FreeRTOS and ESP-IDF.
- Micro-interpreter-based approaches (e.g., MicroPython, WebAssembly).
- Interfacing microcontrollers with sensors and actuators through serial communication protocols.
IoT Components: Data Acquisition
- Data acquisition protocols: CoAP, MQTT, and HTTP.
- Web of Things (WoT) and interoperability.
- IoT Components: Data Management and Analytics
Sensor data storage and processing.
- Time series and time-series databases (InfluxDB).
- Time-series visualization using Grafana.
- Time-series forecasting using statistical methods.
- Time-series forecasting using AI and Machine Learning techniques.
- Edge AI and TinyML.
IoT Components: Edge/Cloud Architectures
- Cloud, fog, and edge computing architectures for data storage and processing.
- IoT platforms, including AWS IoT, ThingSpeak, and related cloud services.
Readings/Bibliography
Instructor’s slides, links to book chapters, scientific articles, and online resources are provided on the course website.
Recommended textbook: Riccardo Melen, Vittorio Trecordi, IoT Networking, Pearson, ISBN 8891931934, ISBN13 978-8891931931, 336 pages (cover price 34 EUR).
Additional textbooks may be recommended during the course depending on the topics covered.
Teaching methods
To successfully follow the course, and considering the strong design and experimental component as well as the exercises included in the program, it is strongly recommended to have the following preliminary knowledge: (i) familiarity with at least one programming language for embedded systems (e.g., C/C++), as well as a language used for front-end or back-end programming (Python is recommended); (ii) knowledge of databases and the SQL language.
The course includes frontal lectures and in-class exercises, conducted by the instructor using PCs and a projector.
Coding exercises in class are performed using IoT devices provided by the instructors. Students must bring their own laptops to participate in the exercises.
Considering the type of activities and the teaching methods used, attendance to this training activity requires all students to have previously completed Modules 1 and 2 of the safety training for study environments, available online at [https://elearning-sicurezza.unibo.it/ ] in e-learning mode.
Assessment methods
The course includes an optional seminar and a mandatory project. The seminar takes place during the last week of the course and consists of a 20-30 minute presentation in which the student presents a research topic related to the course program, based on a scientific article or an existing tool. The seminar topic can be chosen from a list provided by the instructors or proposed by the student. The seminar is graded on a four-level scale (Fail, Pass, Good, Excellent).
The project involves developing an IoT system that implements the entire pipeline presented in the lectures (data acquisition from sensors, embedded system based on a microcontroller, data acquisition on an edge node using HTTP/CoAP/MQTT protocols, data storage with time-series databases, dashboards, data analysis/forecasting of time-series using AI/ML and statistical learning approaches). As with the seminar topic, the project outline can be proposed by the students and approved by the instructor, or directly proposed by the instructor. The project is graded out of 30.
The final grade is calculated considering the project grade and the seminar evaluation, based on the following conditions:
-
If the seminar is not taken, the maximum final grade attainable is 23.
-
If the seminar is taken with a Pass evaluation, the maximum final grade attainable is 25.
-
If the seminar is taken with a Good evaluation, the maximum final grade attainable is 28.
-
If the seminar is taken with an Excellent evaluation, the maximum final grade attainable is 30 with honors.
Teaching tools
The teaching materials (slides, code) presented during the lessons are made available to students through the official course webpage on the Virtuale platform. The page also contains links to software tools usable for completing the project, as well as pointers to information sources (e.g., forums, scientific articles) related to the course topics.
Office hours
See the website of Marco Di Felice
See the website of Luciano Bononi