Learning objectives
The goals of the course, in terms of knowledge and comprehension, are the following:
- to give students a basic knowledge of the main operational principles of IoT systems, with particular attention to the communication protocols;
- to give students an application knowledge based on the use of an IoT testbed in the lab.
Prerequisites
Having attended basic and/or advanced courses on telecommunication networks is useful.
Course unit content
The course is divided in two parts. The first part (theory) is dedicated to the introduction to the Internet of Things (IoT), with a description of the mostly used communication protocols (from physical layer to application layer). The second part (practice) is dedicated to an IoT lab: the students are introduced to the main IoT operating systems and to development tools at application layer. The lab part ends with the assignment of a project, which consists of the design and development of an IoT application (using proper IoT nodes which will be given to students) and of the consequent preparation of a short report. The grade of the project assignment is then averaged with teh grade of a written exam (typically four questions) on the topics covered in the first part of the course.
Full programme
THEORY
LECTURE 1: Introduction to IoT: definitions, history, today's smart objects, challenges for smart objects (at
node/network levels), standardization, technology trends and market growth.
LECTURE 2: Introduction to IoT: hardware, software, testbed at WASN Lab.
Transport Layer Protocols: UDP and TCP: design principles, details of UDP and TCP, UDP and TCP for smart objects.
LECTURE 3: IPv6: the evolution of Internet, IP protocol stack, IPv6 characteristics (headers, addressing, etc.).
LECTURE 4: Communication Mechanisms: communication patterns, communication protocols (IEEE 802.15.4, IEEE 802.11, PLC).
LECTURE 5: Energy-efficient MAC protocols: power consumption, problems in wireless networking (hidden/exposed terminal, near-far), centralized access, traditional contention protocols, energy
efficient MAC protocols-unscheduled (MACA, PAMAS, STEM, B-MAC, WiseMAC, X-MAC) and scheduled (S-MAC,ContikiMAC).
LECTURE 6: 6LoWPAN: a LoWPAN, the adaptation layer, header structure, header compression.
LECTURE 7: Routing in LLNs & RPL: From WSNs to RPL; link model in LLNs, routing requirements, RPL approach; metrics, constraints, objective function; RPL basics, operations, multiple DODAGs; DIO and DAO messages; an example of DAG construction and maintenance.
LECTURE 8: Communication paradigms for the IoT: REST architecture, Web of Things, Publish/Subscribe.
LECTURE 9: Operating systems and hardware for the IoT: Hardware overview; classes of constrained devices; main IoT boards; sensors and actuators; media types for Sensor Markup Language (SENML); CoRE interfaces; operating systems for IoT.
LECTURE 10: Constrained Application Protocol (CoAP); CoAP extensions (Observing resources, Block-wise
transfers, Resource directory & CoRE interfaces, HTTP/CoAP proxying).
LECTURE 11: Service Discovery: CoAP service discovery; resource discovery; ZeroConf; jMDNS; "Lightweight multicast forwarding for service discovery in low-power IoT networks"; scalable and self-configuring architecture for service discovery in the Internet of Things.
LECTURE 12: Security for IoT: threats and coutermeasures; IP layer security (IPSec, HIP); transport layer security (TLS, DTLS); application layer security (S/MIME, SRTP); key agreement and distribution; cryptographic algorithms.
PRACTICE
LECTURE 13: Real-time operating systems: Comparison between freeRTOS and RIoT.
LECTURE 14: FreeRTOS (1/2): principles and characteristics.
LECTURE 15: Introduction to Java: Object-Oriented Programming (OOP); Java basics; Classes and objects; Methods; Interfaces; OOP principles; Practical Java; Design patterns.
Californium (Cf) Framework-CoAP (1/2): Californium (Cf) Framework; Client/Server Architecture; CoAP Server API; CoAP Client API.
LECTURE 16: Californium (Cf) Framework-CoAP (1/2): completion of tutorial.
LECTURE 17: Californium (Cf) Framework-CoAP (2/2): practice by students.
LECTURE 18: FreeRTOS (2/2): Practice with C code for FreeRTOS and communication between two OpenMote nodes.
LECTURE 19: Project assignment.
LECTURE 20: Project development.
LECTURE 21: Project development.
LECTURE 22: Project development.
Bibliography
The main reference textbook is J. P. Vasseur and A. Dunkels, `Interconnecting Smart Objects with IP,` Morgan Kaufmann, [Chapters: 1,2,4,6,11,12,15,16,17].
Several journal papers in the literature and other textbooks will also be indicated.
Teaching methods
The course lectures (of both the first part and of the initial phase of the second part) will be based on the use of slides (given regularly to students), with precise references to the textbook and other papers/teaching material.
Assessment methods and criteria
Written exam (typically 4 questions) on the first part of the course and project (agreed with the professor) on a topic of the second part of the course (lab) with report and associated discussion. The final grade is an (weighted) average between the grades in the written exam and project.
Other information
The teaching and suppport material will be provided in part by the teacher.