91757 - Embedded Systems Programming and Internet of Things (2nd cycle)

Course Unit Page

Academic Year 2021/2022

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

- 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)
-- from mobile computing to wearable computing


- Arduino UNO as microcontroller platform
-- introduction to C++ and Wiring framework
- ESP as SoC/IoT oriented platform
- Android as mobile platform


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

Assessment is based on the development of 3 small projects (assignments) during the course, possibly working in groups, or - as an alternative - the development of a single project proposed by the students. The assignments/project are discussed during a colloquium, along with the various topics of the course.

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).

Office hours

See the website of Alessandro Ricci