In this course, the fundamentals of embedded system hardware and firmware design will be explored. Issues such as embedded processor selection, hardware/firmware partitioning, glue logic, circuit design, circuit layout, circuit debugging, development tools, firmware architecture, firmware design, and firmware debugging will be discussed. The Intel 8051, a very popular micro-controller, will be studied. The architecture and instruction set of the micro-controller will be discussed, and a wire-wrapped micro-controller board will be built and debugged by each student. The course will culminate with a significant final project which will extend the base micro controller board completed earlier in the course. Learning may be supplemented with periodic guest lectures by embedded systems engineers from industry. Depending on the interests of the students, other topics may be covered.