96859 - Embedded Systems and Internet of Things

Academic Year 2026/2027

  • Teaching Mode: In-person learning (entirely or partially)
  • Campus: Cesena
  • Corso: Second cycle degree programme (LM) in Computer Science and Engineering (cod. 6699)

    Also valid for First cycle degree programme (L) in Computer Science and Engineering (cod. 8615)

Learning outcomes

The course introduces the concepts, methods and techniques concerning design and programming of embedded software, i.e. software for embedded systems, focusing in particular on an Internet of Things (IoT) perspective. More in detail, upon completing this course a student will have: - a general background about embedded systems, including Cyber-Physical Systems and Internet-of-Things (IoT); - basic knowledge about the hardware of embedded systems, from microcontrollers to SoC (System-on-a Chip), sensors, actuators, wired/wireless communication technologies and protocols; - basic knowledge about real-time operating systems, their organisation and scheduling techniques - solid knowledge about embedded software design and programming techniques, to deal with aspects related to real-time, reactivity, concurrency, and about main models adopted for that purpose (finite state machines - time triggered and event triggered, tasks and their scheduling); - knowledge about design and programming embedded software systems for mobile and wearable computing; - basic knowledge about main aspects and issues concerning Internet of Things and the organisation and architecture of IoT systems; - the capability of developing embedded system & IoT projects, involving the design and programming of embedded software for microcontrollers or SoC based architectures, and their integration/communication with applications running on mobile devices and with services/backends on the server side.

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:

  1. 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.
  2. 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