- Docente: Alessandro Ricci
- Credits: 6
- SSD: IINF-05/A
- Language: English
- Teaching Mode: In-person learning (entirely or partially)
- Campus: Cesena
-
Corso:
First cycle degree programme (L) in
Computer Science and Engineering (cod. 8615)
Also valid for Second cycle degree programme (LM) in Computer Science and Engineering (cod. 6699)
-
from Sep 16, 2026 to Dec 17, 2026
Learning outcomes
The objective of this course is learning basic concepts and competences about designing and programming embedded software, i.e. software for embedded systems and Internet of Things.
Course contents
- Introduction to Embedded Systems and Internet of Things (IoT)
-- basics about HW (microcontrollers, SoC, sensors, actuators and electronics)
- Programming Models and Techniques for Embedded Systems
-- super-loop
-- Finite State Machines (time-driven and event-driven)
-- Task
-- event-driven architectures
-- architectures base on a Real-Time OS
- Networks of Embedded Systems and IoT
-- models, architectures, communication protocols, wireless technologies for embedded systems
-- message passing models
-- Integration with mobile systems and mobile app programming
-- Basics about IoT architectures and platforms
- Advanced Themes (intro)
-- Web of Things (WoT)
-- Digital Twins
In LAB:
- Arduino UNO as microcontroller platform
-- introduction to C++ and Wiring framework
- ESP32 as SoC/IoT oriented platform with FreeRTOS real-time OS
- Android as mobile platform
Readings/Bibliography
An Embedded Software Primer (David E. Simon) - Addison Wesley
- Programming Embedded Systems: An Introduction to Time-Oriented Programming (Vahid, Givargis, Miller)
- Patterns of Time Triggered Embedded Systems (M. Pont) - Addison Wesley
- Exploring Arduino: Tools and Techniques for Engineering Wizardry. J. Blum. Wiley
- Design Patterns for Embedded Systems in C (B.P. Douglas) - Elsevier
- The Internet of Things (S. Greengard) - MIT Press
- Learning Internet of Things (P. Waher) - Packt
- Building Internet of Things with The Arduino (C. Doukas)
- Designing the Internet of Things (McEwen & Cassimally) - Wiley
Teaching methods
Learning is based on hand-in-hand theory (lectures) and practice (lab), promoting group work.
Assessment methods
The assessment is an oral exam, in which we will discuss the topics of the course, starting from the material (code + documentation) developed and delivered by the student.
The material consists either (alternatively) in:
- the solution to three practical assignments, assigned during the course. These assignments are meant to be done during the course, but this is not mandatory. They can be done in groups, from 1 to 3 members (exceptions are possible). They should be delivered 2 days before the date planned for the oral exam.
- the development of a single project, to be proposed by the student and, possibly refined, by the professor, in order to be fully relevant for the course.
The oral exam is individual, even when the material has been developed in group.
The evaluation of the assessment takes into account:
- the level of understanding of the course topics, of main concepts and techniques;
- the quality of the material delivered, including correctness and completeness;
- the capability to describe and discuss the material, from the general idea to the details.
Teaching tools
Slides are used to support lectures. In the Lab, a kit including Arduino, basic electronics and ESP is available to students for their work (exercises, assignments, projects).
Links to further information
https://virtuale.unibo.it/course/view.php?id=48303
Office hours
See the website of Alessandro Ricci