Gathering evidence for the determination of whether a fault is in the hardware or the software is an important skill for the embedded systems programmer. Lack of experience with real systems is one reason cited by engineers who would exclude computer science graduates from their development teams. For more than a decade I have used a computer controlled model railroad in my real-time embedded systems course. Model railroads provide a wealth of problems from both the discrete and continuous real-time domains. The electronics are easily understood by most undergraduate computer science students.
Students are highly enthusiastic about writing software to control a model train layout.
With the support of the Maytag and Rockwell Foundations, I am implementing an affordable real-time embedded systems laboratory that other institutions can easily duplicate. This track was developed for students interested in the specification, design, and implementation of real-time embedded software. In addition to the typical courses in a computer science curriculum, this track includes more courses in continuous mathematics, physics, and electronics. The real-time systems course serves as the curriculum s capstone course. To perform well in this course, students must integrate knowledge from their previous work in computer science, electronics, English, mathematics, and physics.