Internet Of Things 2022


(A. A. 2021/2022)

Technology is moving beyond the personal computer to everyday devices with embedded technology and connectivity as computing devices become progressively smaller and more powerful. We are going through a new phase of computing evolution that involves processing capabilities in everything: objects, places, people, and processes. Almost any device, from clothing to tools to appliances to cars to homes to the human body to your coffee mug, can be embedded with chips to connect the device to an infinite network of other devices.

The Internet of Things (IoT) goes beyond the realm of personal computers: devices, networks, and cloud services are being merged with people and their activities - individuals or groups - to provide new and exciting possibilities in everything we do. Such highly interconnected computational components act autonomously and intelligently through the use of software agents that seamlessly integrate humans in the loop, creating new opportunities for intelligent systems where humans and agents interact continuously.

"Ubiquitous computing names the third wave in computing, just now beginning. First were mainframes, each shared by lots of people. Now we are in the personal computing era, person and machine staring uneasily at each other across the desktop. Next comes ubiquitous computing, or the age of calm technology, when technology recedes into the background of our lives" -- Mark Weiser, 1988

Course Objectives

The course aims to introduce students to the main concepts behind the Internet of Things (IoT) necessary to (a) understand the meaning of digital ubiquity and how connections, sensors, and data are revolutionizing business by examining emerging application scenaria and studying characteristic design approaches of pervasive systems and embedded networks; (b) build physical prototypes of smart objects that embedded processing capabilities to almost any device, from clothing to appliances to homes to cars to business machines taking into consideration the constrained resources available on embedded systems; (c) design robust and efficient information & communication infrastructures for the acquisition, processing and storage of sensor data; (d) examine essential algorithmic techniques and performance limits and provide the foundations for algorithms engineering in open-design; (e) evaluate the performance of the solution implemented in terms of network, energy, and cybersecurity requirements using real-world experimentation facilities.

This course introduces the students to programming for embedded devices, real-time operating systems and hardware platforms based on the ARM Cortex-M architecture. Techniques for task scheduling and power management in low-power and real-time operating systems. Networking technologies and standards for low-power and long-range wide area networks. Advanced techniques for over-the-air programming in lossy wireless networks. Low-power cryptographic mechanisms for data encryption and network security.

The students will study data processing architectures that achieve certain service level requirements (a) based on the cloud computing paradigm to integrate sensors data with web and mobile services; (b) combining Big Data analytics for stream processing of sensor data; (c) building upon the edge computing and fog computing paradigms to take advantage all the resources available on the cloud-edge-device processing continuum; (d) utilize distributed ledger technologies and smart contracts to integrate sensor data in advanced services; (e) protect the privacy and confidentiality of date by utilizing privacy preserving aggregation and group computation techniques. The course focuses on technologies to collect, integrate and processing data in the most efficient way rather than in exploiting those data to distill new knowledge (e.g. machine learning).

The course is characterized by a learn-by-doing approach. To pass the exam students have to carry out individual assignments and a final group project.


The course is organized in the following modules:

  • Module 1: Designing Applications for the Internet of Things.
    • Introduction to the main concepts of the IoT and design aspects of IoT platform enabled applications. Overview of specific IoT application areas such as Transportation/Mobility, Energy, Retail and Healthcare. Study of specific use cases and IoT projects. Experience/Interaction design for IoT applications.
    • Introduction to research areas of Ambient Intelligence, Collective Intelligence, Participatory sensing and Crowdsensing. Presentation of scientific & technological challenges.
Lectures: 1, 4, 20
Introductory Study:
  • Module 2: Embedded Operating Systems and Hardware Platforms.
    • Introduction to embedded operating systems and offered services. Overview of IoT operatings systems (Riot-OS, Contiki, TinyOS). Deployment methodology and offered services. Task scheduling and power management in low-power and real-time operating system.
    • Hardware prototyping platforms. The ST Microelectronnics NUCLEO platform and the ARM Cortex M architecture.
Lectures: 2, 3, 5, 7, 10, 22
Introductory Study:
  • Module 3: Networks, Protocols, Security.
    • Low-Power Wireless Networks. The 802.15.4 communication protocol. The 6LoWPAN and IPv6 for the IoT. Routing in Low-Power Wireless Networks.
    • Low-Power Wide-Area Networks. LoRa alliance and LoRaWAN, 5G and NB-IOT.
    • Machine-to-Machine (M2M) communication, basic principles of interoperability.
    • Securing the Internet of Things, TinyDTLS and Elliptic Curve Cryptography.
Lectures: 5, 6, 7, 8, 10, 21, 22
Introductory Study:
  • Module 4: Performance Evaluation.
    • Introduction to different aspects of performance evaluation for IoT applications. Elements of network performance and wireless communication. Measuring power consumption and energy efficiency. Looking into the security and privacy of data.
    • Tools for conducting performance evaluation. Overview of software simulators. Synthetic models for wireless channels, node mobility and application traffic generation. Using real-world datasets.
    • Experimentation-as-a-service: IoT Lab for very large scale open real-world experimentation.
Lectures: 11
Introductory Study:
  • Module 5: Data, Analytics, Privacy.
    • Introduction to data processing architectures. Big Data analytics in IoT enabled applications. AIOT: Artificial Intelligence for IoT. Cloud vs Edge computing, technical challenges and service level requirements. Basic notions of Fog computing and research challenges.
    • Presentation of Amazon Web Services for the Internet of Things. Detailed presentation of IoT Core, IoT Analytics, GreenGrass. SageMaker @ Edge
    • Blockchain for IoT. Opportunities and Challenges of Smart Contracts for IoT. Introducing IoT data in Smart Contracts using Oracles. IOTA: open-source distributed ledger and cryptocurrency designed for the Internet of things.
    • Privacy Preserving Computation. Privacy preserving aggregation and group computation.
Lectures: 12, 13, 14, 15, 16, 17
Introductory Study:

Individual Assignment

Students will need to carry out a single assignment that realizes an IoT system. The assignment is individual and needs to be submitted through Google Classroom.

Students will receive an STM NUCLEO-64 F401RE development board provided by ST Microelectronics.

Students are required to buy an electronics components kit. The electronic components kit in combination with the STM NUCLEO-64 F401RE development board will be used to learn the basics of embedded programming and circuit assembly. Additional components may be needed, depending on your design choices for the realization of the individual assignments.

The above assignment is done by each student individually. Clearly you should discuss with other students of the course about the assignments. However, you must understand well your solutions, the code and the final write-up must be yours and written in isolation. In addition, even though you may discuss about how you could implement an algorithm, what type of libraries to use, and so on, the final code must be yours. You may also consult the internet for information, as long as it does not reveal the solution. If a question asks you to design and implement an algorithm for a problem, it's fine if you find information about how to resolve a problem with character encoding, for example, but it is not fine if you search for the code or the algorithm for the problem you are being asked. For the projects, you can talk with other students of the course about questions on the programming language, libraries, some API issue, and so on, but both the solutions and the programming must be yours. If we find out that you have violated the policy and you have copied in any way you will automatically fail. If you have any doubts about whether something is allowed or not, ask the instructor.

Group Assignment

Students are organized in groups of three and take over the design, development and evaluation of a pervasive system.

The development will be based on the STM NUCLEO-64 F401RE development board allowing the students to try out their ideas and to quickly create prototypes for evaluation. Each project will be demonstrated at the end of the semester along with a detailed presentation of the evaluation of the end-to-end performance.

The group assignment thematic area, expected results and delivery schedule will be presented in detail during the 1st Lecture.

Final Exam

The course will be evaluated based on the performance of (a) the individual assignment, (b) the three deliveries of the group project and the overall quality of the group project, and (c) the active participation of the student during the semester.

You can find detailed information on what you are expected to submit, how and when for each of the individual assignment, the three deliveries of the group project on the previous sections by following the links "Instructions".

Additional information about exam products are given during the class and communicated through the Google Classroom system. We strongly suggest students to attend the class and to participate to these activities in order to complete the assignments within the dates of the course.


Location & Schedule

  • Tuesday, 10:00 - 14:00, SPV Room 29
  • Friday, 10:00 - 12:00, SPV Room 41
The classes can be followed online via Zoom. To obtain the credentials you need to Google Classroom and Slack (see below).

Contact & Discussions

A Google Classroom is available using the following code: io555fr

A slack channel is available at the following URL:

Course Plan & Detailed Material

Previous Years