Information for Spring 2022

Amazing things happen when you connect software to the physical world. You may have already experienced the delight of doing this an Arduino or Raspberry Pi, logging sensor data to the internet or controlling an electromechanical device with a few lines of code. In this course, we'll take this to the next level and tackle the challenges of deploying embedded and "Internet of Things" products in the real world. For example:

  • What microcontroller should you choose when you have to justify every penny of the cost?
  • How do you handle software updates when you have no physical access to the device? What happens when your code crashes?
  • What does it take to make a computer system run for days or weeks on a single battery charge?
  • How do you fabricate a circuit board and package your system to withstand daily use or outdoor weather?

Throughout the semester you'll work with a large team to build, program, and deploy a real embedded system, from concept to circuit board to code to web interface. Class sessions will mix hands-on project work with bits of instruction on immediately relevant topics.

Contact Steven Bell with questions (


What are the prerequisites for the course?

This will be a highly collaborative course, and I expect that each person will bring different skills to the project. At a minimum you should have some experience with writing code and building circuits, but we're looking for a mix of expertise in software, circuit design, mechanical design, and web development. You must have junior, senior, or graduate standing to take the course.

Do I need to be an EE major to take the course?

Not at all! I hope to have a mix of majors in the course, and part of the experience will be working together from diffent perspectives and learning from each other.

This has a time conflict with some other course I need to take! Will it be offered next year?

Yes, it is my intent to offer this course next year, although special-topics offerings are always subject to scheduling details and the needs of the department.

How will this be different from EE 14 (Embedded Systems)?

EE 14 focuses on the nuts and bolts of writing C and assembly code for microcontrollers, and interfacing with various peripherals. This course will focus on IoT topics and the practical challenges of deploying devices in the real world. We'll write our share of low-level code, but the emphasis will be on going from an Arduino or a prototype on a breadboard to a fleet of devices deployed in the real world.