The “Internet of Things” is reshaping the world by more and more integrating our lives with technological components. The course aims at providing the general understanding and concepts about the technologies behind the Internet of Things (IoT) and in particular to applications to the so-called Industry 4.0. The course will discuss IoT design considerations, constraints and interfacing between the physical world and IoT devices, and how to make design trade-offs between hardware and software. Key aspects of networking will be covered to understand how devices are connected.
Course Prerequisites
The following prerequisites may be useful, but given the introductory nature of the course, they are not mandatory: - computer programming - software architecture of computers - computer networks
Teaching Methods
The course is organized in frontal lectures that will cover all the topics listed in the program. Frontal lectures amount to around 2/3 of the course. The remaining lessons will consist in laboratory lectures and exercises related to the programming of IoT devices.
Assessment Methods
The exam consists in a single written test with questions and exercises related to the arguments presented during the course. There are no intermediate tests during the semester. An optional oral exam can be agreed upon request by the student or by the teacher.
Texts
All the material presented during the lessons is available from the course webpage as slides in PDF format. Additional resources include the following books:
David Hanes et al., “IoT Fundamentals: Networking Technologies, Protocols, and Use Cases for the Internet of Things”, Cisco Press, 2017.
Andy King, “Programming the Internet of Things: An Introduction to Building Integrated, Device-to-Cloud IoT Solutions”, O’Reilly, 2021.
Contents
The technologies involved in the IoT hardware/software stack encompass a broad spectrum, including embedded systems, sensors, operating systems, networking, communication protocols, data management and analysis. The course will introduce the main concepts of each domain, with more focus on some specific selected aspects. The course will include hands-on lectures on the basics of programming for the IoT using the Python programming language.
Detailed program
1. Definition of “Internet of Things” and Industry 4.0 2. Technological trends which brought to IoT 3. Impact of IoT on society and examples of applications 4. Definition and architecture of embedded systems 5. Interfacing of embedded systems with the physical world (sensors and actuators) 6. Operating systems and real-time scheduling 7. Basic of Finite State Machines 8. Basic networking hardware and software stacks 9. Network protocols (MQTT, CoAP) and data formats (JSON, XML) for the IoT 10. Introduction to the Python programming language 11. Python programming skills related to MQTT, JSON, HTTP 12. The tkinter Python library for graphical interfaces 13. The flask web framework and REST API