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.