Many topics are covered at a survey level. For example, students in the course learn just enough of the basic concepts of control theory to be able to communicate with a control engineer and to implement a simple control algorithm. Feedback from employers in a wide range of domains, including avionics, communications, manufacturing, and medical instrumentation has been extraordinarily positive. These include data modeling, encapsulation and reuse, concurrent programming, and exceptions. Later laboratory sessions are devoted to developing code that will be directly applied to their projects, including polling and interrupt-based device drivers, implementation of a whistle class, and implementation of a turnout class.
Turnouts are electromechanical devices that sometimes fail to operate correctly.
The software must detect and correct turnout failures. Students derive their code from state machines they develop in one of the lecture sessions. Teams are free to formulate their own projects. Having at least one train controlled by a human engineer. Experiencing no collisions.