Welcome

Train Operating Systems 101 with Ryan Kaufman

To say that any project in computer science is easy is to make a fatal flaw in logic that leads down a familiar path. Most if not all programmers will or have dealt with this phenomenon, and I am no stranger to it. That being said, I've been tasked with creating an operating system for a train set. The key issue, here, is it must be dynamic. This means that no matter where I put this code, two trains should not collide given I did my job. In other words, it is modular and can be put into any set of trains or a train simulation given the right format (in that I need sensors to tell my code what's going on; a basic request). This could take a few weeks to develop, or it could take the entire semester. I do not know what lies in store for me during this sure-to-be fun adventure, all I know is I'm not alone entirely. Outside of the help of the professors, I also have a friend working on a similar project, only he's doing the part I'm avoiding - building the actual simulator. Which of us has the better project, I'll not know until this is all finished. All I can be certain of is I have some work to do.

Formal description: Design an operating system for the Computer Controlled Railroad that allows multiple trains to operate in real time on a shared track layout.

General Requirements:
1. Interface with the CCR Simulation using the communication protocol that you developed together.
2. Use operating system concepts to deal with racing conditions, resource allocation, scheduling, etc.
3. Deal with starvation and deadlock.
4. Identify error conditions and attempt to solve them
5. Develop a simple user interface that can be used to test the operating system.