This course introduces students to the design and implementation of the Internet of Things (IoT) systems. It starts by giving the background of the technologies that are integrated to create IoT systems, through the protocols used to implement IoT communications networks, network security and energy harvesting, to the use of open-source tools to implement basic IoT systems. Students will be exposed to programming languages and programming frameworks used in IoT best practices. They will connect embedded devices to the Internet, build a web server, and implement data visualization on a website. The course will be assessed through practical/laboratory exercises, assignment, exam and a final project.