Link Search Menu Expand Document

CE346 - Microprocessor System Design


The Internet of Things promises a world of computers woven into our physical world. These computers do not look and function the same as the servers and desktops that have long dominated the computing world. Instead, they take the form of microcontrollers with a processor, memory, and peripherals all within a single chip. Microcontrollers are then embedded into circuit boards alongside sensors, batteries, and interfaces that connect it to the outside world

In this course, we explore the design and use of these microcontroller-based systems. What are the requirements and capabilities of embedded software? How do we connect computation to real-world input and use it to output to actuators or other nearby computer systems? How can sensors be used and combined to understand a computer’s physical environment? Along the way we’ll discuss many aspects of software and electrical system designs and how they can be made to work together. The class will include lectures on these topics, practical hands-on lab sessions interacting with microcontroller systems, and an open-ended final project.


  • CS211 or equivalent: C programming experience and Unix environments
  • CS213, CE205, or equivalent: Introduction to systems and computer organization



Detailed Course Topics

  • Microcontrollers
  • Embedded Software
  • Digital Input and Output
  • Analog Input and Output
  • Timers
  • Wired Communication Protocols (UART, SPI, I2C)
  • Basic Wireless Communication

We will investigate these topics through the Micro:bit v2 platform ( While the board supports many different languages, we will be exploring low-level details about how the platform works using the C programming language.


These are in-person, guided team activities to develop and practice understanding on the platform. Current labs include:

  • Memory-Mapped I/O and Interrupts
  • Timers
  • LED Matrix
  • Breadboarding
  • Audio
  • I2C Accelerometer

In-class time is reserved for labs and students must sign up for a lab session when registering.

Final Project

This is an open-ended, team-based project of the student’s choosing that demonstrates understanding and capabilities with embedded systems. Past projects have included interactive robots, musical instruments, electronic clothing, and Internet of Things devices.