The course is offered within the study program of Electronics and Information Technology Engineering at the University of Genoa and presents the general theme of the Web of Things (WoT) as a paradigm of the close relationship between the physical world and the Web, where Web technologies (HTTP, REST) can be employed to gather information and make decisions in the real world.
The course, inspired by the "Maker Movement," aims to encourage the development of projects that involve both hardware and software components. Throughout the course, students will invent, design, and build ("make") a complete system following the engineering design process. The course builds upon the knowledge acquired in foundational courses such as "Introduction to Programming", "Digital Systems Electronics" and "Electronic Systems Architecture". Students will create prototypes that integrate mechanical parts, digital electronic circuits, and local and remote software applications. Regular attendance and active participation in the proposed educational activities (lectures and practical laboratories) along with individual study will enable students to:
- define the requirements of a complete system consisting of sensors, local processing, locale/remote processing, persistence, and access through mobile devices.
- acquire real-world measurements through sensors;
- process the collected data directly at the sensor using embedded systems;
- collect data on a procy device or on a remote server hosting a non-relational database;
- visualize data graphs through mobile devices (smartphones);
- interact with the physical world through actuators.
The student will be familiar with the concept of REST APIs and he will be able to apply it using HTTP, NodeJS, and MongoDB technologies. By the end of the course, the student will be capable of designing and implementing a complete hardware/software system in the filed of WoT.
To effectively engage with the contents of the course, the following basic knowledge is required: programming with the C programming language and fundamental concepts of digital systems design.
The following list outlines the topics covered in the course:
- Introduction to IoT, WoT, and Physical Computing
- Edge Devices
- Sensors
- JavaScript
- HTTP
- NodeJS
- REST API
- WoT Proxy
- Persisting Data
- Securing
- Interoperability and Semantics
- GUI (Graphical User Interface)
By accessing the GitHub repository, you will have access to the lecture materials, including slides, source codes and lecture notes to further explore and study the course topics.
Slides, source code, and lecture notes used during the lectures are sufficient for exam preparation. The following books are recommended as supplementary texts:
- Michael Margolis, "Arduino Cookbook," O'Reilly
- Marijn Haverbeke, "Eloquent JavaScript: A Modern Introduction to Programming," No Starch Press
- Tom Hughes-Croucher, "Node Up and Running," O'Reilly
- Leonard Richardson, "RESTful Web APIs," O'Reilly
- Dominique Guinard, "Building the Web of Things," Manning
These books can provide additional insights and resources for further study on the topics covered in the lectures.
The teaching approach consists of both lectures and practical exercises. In particular, students will be provided with content in the form of slides accompanied by lecture notes and running examples, which they can access before the lectures. During the lectures, the instructor will apply the content to complex problems, delve deeper into the topics covered, oversee the production of assignments by students in groups, and discuss the main difficulties encountered. Students are encouraged to use their own computers during the lecture to actively engage with the material presented by the instructor. During the practical exercises, students will tackle real-world problems on their computers, applying the techniques learned from the tutorials and further explored during the lectures.
The exam consists of an oral examination on the theoretical topics covered in the lectures and a discussion of the exercises carried out during the lessons. In particular, students must demonstrate a full understanding of the concepts underlying the development of RESTful APIs and their application to the design and implementation of WoT applications. The exam will assess students' comprehension of the concepts, their ability to apply the algorithms, and their practical implementation skills.