Università degli Studi di Urbino Carlo Bo / Portale Web di Ateneo


A.Y. Credits
2022/2023 6
Lecturer Email Office hours for students
Emanuele Lattanzi Monday from 4:00 pm to 6:00 pm
Teaching in foreign languages
Course with optional materials in a foreign language English
This course is entirely taught in Italian. Study materials can be provided in the foreign language and the final exam can be taken in the foreign language.

Assigned to the Degree Course

Applied Informatics (LM-18)
Date Time Classroom / Location
Date Time Classroom / Location

Learning Objectives

The course aims to illustrate the architecture, functionalities and communication methods of the Internet of Things systems with particular reference to its programming techniques. In particular, the course introduces the programming technologies and methods dedicated to the the embedded systems based on the most popular microcontrollers and realtime operating systems.


01. Introduction to IoT

    01.01 Overview and definitions

    01.02 Functional view

    01.03 Infrastructure view

    01.04 Applications

02. Edge computing

    02.01 Sensors and actuators  

    02.02 Data acquisition and processing

    02.03 Data management

    02.04 Time-series database

03. Embedded systems programming techniques

    03.01 Super-loop

    03.02 Finite state machines

    03.03 Event-driven programming

    03.04 Real time operating systems

04. Communication

    04.01 Network layers

    04.02 Wireless Edge Network for IoT

    04.03 Constrained Application Protocol (CoAP)

    04.04 Message Queuing and Telemetry Transport (MQTT)

05. Machine Learning for IoT

    05.01 Centralized on-cloud Machine Learning

    05.02 Distributed Machine Learning

    05.03 Machine Learning on the edge

06. Laboratory Activities

    06.01 Connect actuators and sensors to a Raspberry Pi

    06.02 Mange time-series with InfluxDB

    06.03 Program ESP MCU with FreeRTOS

    06.04 Sample ESP MCU data with ThingSpeak

    06.05 Explore MQTT protocol with Mosquitto

Bridging Courses

There are no mandatory prerequisites

Learning Achievements (Dublin Descriptors)

  • Knowledge and understanding: at the end of the course, the student will acquire fundamental knowledge on the structure and functionality of the Internet of Things systems. Furthermore, the student will know the most widespread programming techniques, development platforms, and communication protocols.
  • Applying knowledge and understanding: the student will acquire skills on the creation of device-side and cloud-side applications for Internet of Things systems. In particular, the student will acquire programming skills in C, in Processing, and in Python languages, respectively, on real-time operating systems, on Arduino compatible platforms, and on Raspberry Pi.
  • Making judgements: at the end of the course, the student will be able to distinguish the main advantages and disadvantages of possible Internet of Things solutions and will be able to independently choose the hardware/software technologies, communication protocols and cloud platforms to build an Internet of Things system following a reference scenario.
  • Communication skills: the student will acquire the ability to communicate the fundamental concepts of the Internet of Things operation and programming with an appropriate and rigorous terminology.  The student will learn how to describe the programming problems and the methodologies adopted for their solution. Furthermore, the presentation of the exam project will give students the ability to independently integrate the knowledge learned during the course with further knowledge and to summarize the main topics in order to clearly set up a presentation.
  • Learning skills: the student will acquire the ability to study and learn the structure, the functioning and the programming techniques of the Internet of Things systems.

Teaching Material

The teaching material prepared by the lecturer in addition to recommended textbooks (such as for instance slides, lecture notes, exercises, bibliography) and communications from the lecturer specific to the course can be found inside the Moodle platform › blended.uniurb.it

Teaching, Attendance, Course Books and Assessment


Theory lectures and laboratory exercises.


Although recommended, course attendance is not mandatory.

Course books
  • Milan Milenkovic, Internet of Things: Concepts and System Design, Springer.
  • Dominique Guinard, Building the Web of Things: With Examples in Node.js and Raspberry Pi, Manning.
  • Gary Smart , Practical Python Programming for IoT: Build advanced IoT projects using a Raspberry Pi 4, MQTT, RESTful APIs, WebSockets, and Python 3, Packt Publishing

The exam includes a programming project and its oral presentation. The project, previously agreed with the teacher, must be accompanied by a summary report (maximum 10 pages) and must be submitted at least one week before the oral exam. The oral exam will consist of a presentation (using appropriate slides) together with a demonstration of the working project. The presentation will be followed by a discussion.

« back Last update: 07/07/2022


Questo contenuto ha risposto alla tua domanda?

Il tuo feedback è importante

Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

Se sei vittima di violenza o stalking chiama il 1522

Il 1522 è un servizio pubblico promosso dalla Presidenza del Consiglio dei Ministri – Dipartimento per le Pari Opportunità. Il numero, gratuito è attivo 24 h su 24, accoglie con operatrici specializzate le richieste di aiuto e sostegno delle vittime di violenza e stalking.

Posta elettronica certificata



Università degli Studi di Urbino Carlo Bo
Via Aurelio Saffi, 2 – 61029 Urbino PU – IT
Partita IVA 00448830414 – Codice Fiscale 82002850418
2023 © Tutti i diritti sono riservati