Almost all universities offer introductory courses that focus on microcontroller-based systems and embedded programming. Advanced course offerings vary, and are often not available until the graduate level, leaving a gap in training undergraduates. However, courses are emerging that take advantage of new embedded development platforms that support hardware-software codesign. At Iowa State University, the Department of Electrical and Computer Engineering is developing a new upper-level design course on embedded systems design (CPRE 488) that sits between the introductory course on microcontrollers (CPRE 211) and a graduate course on system-level design (CPRE 588). CPRE 488 pulls together pedagogy from leading textbooks in embedded systems (such as Wolf, and also Vahid and Givargis) and puts the concepts into an intensive laboratory incorporating platform FPGA technology. The lab utilizes Xilinx's Virtex II Pro FPGA, which includes a hard-core dedicated processor as well as FPGA fa...