The biggest revolution in computing isn’t big computing, it’s small computing: small, interconnected computers with sensors that help us do things around our homes, monitor our environment, even create new types of art. These small computers, part of the internet of things (IoT), are inexpensive, widely available, and can be programmed using the same tools as traditional computers. Using them to solve real-world problems poses new challenges, though: how can a remote sensor last for months on a battery? How can it measure temperature at a bottom of a lake? How can it communicate its results securely to the world, far away from our homes or lab?

This course will provide a foundation for thinking about using low-power networked computing devices to measure and interact with our world. We will learn about different kinds of computer hardware (e.g., processors, sensors, power sources) and software (programming environments, networking, security) with the goal of understanding what’s possible. Then, together, we will propose real-world applications using networked devices and sensors, working through the engineering requirements to make them happen.

Requirements: Some exposure to programming and comfort using computers. We will emphasize concepts, not extensive coding. However, may use multiple different programming languages depending on the requirements of different devices, and students should be prepared to be exposed to languages they haven’t previously used. Students should have the willingness to work through challenges to solve real world problems, both individually and as a group, and to participate in shaping the direction of the course.