Abstract
Less than one half of one percent of all processors manufactured today end up in computers. The rest are embedded in other devices such as automobiles, airplanes, trains, satellites, and nearly every modern electronic device. Developing software for embedded systems requires a greater knowledge of hardware than developing for a typical desktop application. Despite the great demand for people to develop real-time embedded system software, few universities devote class time to giving students the necessary skills. In this paper I describe a course and stimulating environment for introducing students to this important domain. I make arguments for using real devices rather than simulations and for using a computer-controlled model railroad. I describe the computing and railroad hardware, laboratory assignments, and course project used in my course. Finally, I present a summary of the effectiveness of programming language choice based on an analysis of 13 years of data.
Acknowledgements
Thanks to the many “train course” students for keeping meticulous notes on the mistakes they made over the years. This work is based on an earlier work (McCormick, Citation2005).