Internet of Things (IoT) is a fast-emerging area in the technology industry today, which has applications in a wide variety of domains including home automation, wearables, personal fitness, smart grid, smart irrigation, and smart parking. The total number of IoT devices is estimated to exceed 20 billion in the next several years. This course is intended for students who want to learn how to design and prototype IoT applications. It focuses on hardware choices, including sensors, actuators, and IoT platforms, the software required to interact with these sensors and actuators, the communication bearers available for moving the data to/from the sensors and the platform and getting it to a cloud platform. Upon completion of the course, one will be able to design and implement a complete end-to-end IoT solution from sensors through getting data into the cloud.

The course consists of two parts. In the first part, the course offers an overview of IoT and covers the basics of designing and developing IoT applications, including the building blocks of IoT, characteristics of IoT systems, and IoT design patterns. Sensors, actuators, IoT hardware platforms, and communications capabilities will all be explored. The second part covers how to design and prototype IoT applications with a focus on end-to-end solutions. Taking the knowledge gained in the first part of the course, one will implement several end-to-end solutions, gaining important practical experience.

Topics Include:

  • Definition and characteristics of IoT

  • Building blocks of IoT

  • Domains of IoT applications

  • Designing IoT systems, including design methodologies, design patterns and case studies

  • End-point devices in IoT: Sensors, actuators and IO interfaces

  • Programming with sensors

  • Popular IoT devices and prototyping platforms

  • IoT cloud platforms and getting data into them

Note(s): This course is project based and requires the purchase of several sensors and IoT hardware platforms (about $120, not included in the tuition). Detailed board information will be provided at the first class. Students are required to bring laptops to class.

Skills Needed: Knowledge of embedded system hardware and programming experience with C. Some practical electronics or electrical engineering experience is beneficial, but not required.