This course introduces the hardware and software design of embedded systems using microcontrollers. Students are introduced to microcontroller programming in both assemblies and C. Important subsystems of the microcontroller are covered such as timers, interrupts, the serial transmission of data, analog to digital, and digital to analog converters. There are a series of exercises introduced into the lectures and labs, which give students hands-on experience working with microcontrollers. At the end of the course, each student will choose a design project to work on during the last few weeks.