COMP_SCI 346: Microcontroller System Design



COMP_SCI 211 and (COMP_SCI 213 or COMP_ENG 205)


Structure and timing of typical microprocessors. Sample microprocessor families. Memories, UARTS, timer/counters, serial devices, and related devices. MUX and related control structures for building systems. Standard bus structures. Interrupt programming. Hardware/software design tradeoffs.

COURSE OVERVIEW: 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.

  • This course satisfies the Systems breadth & project requirement.
  • This course is under the ECE Embedded Systems area.
  • Cross-listed with Comp_Eng 346


COURSE INSTRUCTOR(S): Prof. Branden Ghena or Prof. Stephen Xia


COURSE GOALS: Teach students how to design, build, and program microcontroller-based embedded systems.


  1. C programming
  2. Basic Unix command line tools
  3. Basic structure of a processor- instructions, registers, and memory

While an understanding of circuits and digital logic is certainly useful, it is not required and the course will cover any circuit knowledge you need to know.


  • 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.

LABORATORY SESSIONS will include guided, team activities to develop capabilities on the platform. Current labs include: 

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

FINAL PROJECTS focus on an open-ended, team-based project of your choosing demonstrating your understanding of and capabilities with embedded systems. Past projects have included interactive robots, musical instruments, glove-based interfaces, electronic clothing, and Internet of Things devices.

GRADES follow this general breakdown, but are subject to change.

  • Lab Activities - 40%
  • Final Project - 40%
  • Quizzes - 20%

ABET CONTENT CATEGORY: 100% Engineering (Design component).