Abstract
Embedded systems are increasingly pervasive, and the creation of reliable controlling software offers unique challenges. Embedded software must interact directly with hardware, it must respond to events in a time-critical fashion, and it typically employs concurrency to meet response time requirements. This paper describes an innovative course that gives students in-depth exposure to the challenges of writing reliable, time-critical, concurrent code. Students design and implement a real-time operating system (RTOS), and they write application code that uses the RTOS they construct. Code development and debugging take place in a simulation environment that offers visibility into the system and strictly repeatable execution while maintaining hardware compatibility. We describe the structure of the class, the custom tools used, and the laboratory sequence that results in a functional RTOS. We discuss the development of the class and its impact on our students.