Ada, Model Railroading, and Software Engineering Education
John W. McCormick
University of Northern Iowa
Computer Controlled Systems Study Option
•	For students interested in the specification, design, and implementation of real-time embedded software.
•	Core courses from the ACM curriculum.
•	Additional courses in
–	Continuous mathematics
–	Physics
–	Electronics
CSC 416
Real-Time Systems
•	A capstone course.
•	To perform well students must integrate knowledge from:
–	Computer Science
–	Physics / Electronics
–	English
–	Mathematics
CSC 416
Real-Time Systems
•	Students are exposed to fundamental scientific issues in real-time computing and practical skills of software development.
•	Goal is to train software engineers capable of working as part of a development team.
•	Many topics covered at a survey level.
The Laboratory
The Laboratory
•	Simulators
–	Do not provide many of the frustrating problems associated with actual physical systems

–	Lack of experience with real systems is one reason cited by those who would exclude computer science graduates from development teams.
The Laboratory
•	The problem now becomes finding a physical system for students to control
•	In 1984 I began using a large model railroad in my course.
•	Why a model railroad?
–	Let’s look at some pictures!
Projects in C
Projects in Ada
Why does Ada succeed where C fails?
•	Modeling of scalar quantities
–	Strong typing
–	Range checking
–	Enumeration types
•	Parameter modes
•	Named parameter association
Why does Ada succeed where C fails?
•	Arrays whose indices do not begin at zero
•	Representation clauses for modeling device registers
–	Record types
–	Enumeration types
Why does Ada succeed where C fails?
•	High level of abstraction for tasking.
–	Ada students use rendezvous
–	C students used semaphores
•	Exception handling
•	Encapsulation
–	Package specifications and bodies
•	Compilation model
–	Obsolete units are detected!
–	No make files!
Laboratory Assignments
Code for learning Ada features

•	Basic language features
•	Packages
•	Tasking
•	Generics
•	Exceptions
Laboratory
Assignments
Code for the course project
•	Polling and interrupt based device drivers
•	Implementation of whistle class
•	Implementation of turnout class
–	Electro-mechanical devices which sometimes fail to move correctly
–	Code must detect and attempt to correct the problem
–	Code derived from a state machine model
Project Specification & Design Deliverables
•	System concept document
•	Detailed user manual
•	Rumbaugh OMT documents
–	Object model diagrams
–	Dynamic model diagrams
–	Functional model diagrams
–	Data dictionary
•	Package specifications
•	Package test plans
Minimum Project Requirements
•	Multiple trains
•	At least one train controlled by a human engineer
•	No collisions
•	Detect and recover from hardware failures
–	Turnouts
–	Sensors
–	Lost cars
–	Devious professors
Popular Project Themes
•	Races
•	Train wars
•	Scheduling (usually combined with project in the AI class) 
Where do we go
from here?

•	Over 50 Schools have inquired about duplicating the laboratory
•	Only about 3 schools have actually built a model railroad
–	Commercial interface boards too expensive
–	Too much time or expertise required to build electronics in house
•	My Solution
–	Design and manufacture inexpensive plug-n-play model railroad interfaces
Corporate Sponsors