Traditional products are becoming smart products and smart products are becoming connected. From smart homes to smart cities, this trend in product development and design is likely to have a profound impact on our future.
This course takes the view that the internet of things is best viewed as an extension of the World Wide Web. So, throughout this course, we will consider how the Web was designed and how its principles can be used to design the internet of things.
The course combines weekly readings from journal articles with hands-on exercises and programming. The student will work with modern IOT technologies, standards, and platforms. We will connect sensors and actuators to the cloud but we will do so in a way that is based on sound architectural principles.
The internet of things has countless applications and so should be of interest to a wide variety of students. Anyone interested in such topics as internet technologies, product design, city planning, sensor networks or software design, should find the course to be of interest.
We will be making use of two different programming languages in this course. Primarily these are Javascript (using node.js and Node-RED) and C++ (on a microcontroller). But the course is designed with only one prerequisite in mind - the student should be comfortable writing computer programs in some programming language. The course itself will introduce the necessary constructs in the languages the student may not have used before.
At the end of this course, the student will be able to:
-
understand the architectural principles that were used to design the World Wide Web.
-
design IoT systems using RESTful principles.
-
appreciate the differences in message formats, such as binary and textual, and be able to select which is appropriate in different settings.
-
will understand several important IoT protocols. We will study MQTT, XMPP, CoAP, HTTP, and BLE.
-
build firmware applications for a microcontroller.
-
build Node-RED flows.
-
build firmware applications that interact with digital twins on the cloud.
-
develop web applications that are usable in real time IoT environments.
-
appreciate the privacy and security issues associated with the IoT landscape.
-
appreciate the importance of identity and identity management in the internet of things.