Create a Hospital Management project that controls the room allocation, medicine, prescriptions, payments, etc. The administrator can register new employees and give the required rights to them according to their role.
• Since it is difficult to predict just how hard implementing a new system will be, you should formulate as a set of “tiers,” where the basic tier is something you’re sure you can complete, and the additional tiers add more features, at both the application and the system level. For example, your system enhancements could include increasing the level of fault tolerance, decreasing the time to recovery, or adding features to increase scalability or security.
• You may choose any programming language. Although Java is a logical choice, there are other possibilities, including Python
• You may use any of the packages in the Java library (or comparable packages in
whatever language you choose.)
• You may not use any externally created distributed system packages, such as Zookeeper or Cassandra.
• You are allowed to use external packages to support the application or user interface. Examples include things such as GUI builders or frameworks, image/video/audio processing packages, online mapping APIs, etc.
Design, implement, and thoroughly test your own distributed system, implementing some application such as a multi-player game, or a transaction system. Since this is a course in distributed systems, we want it to have “interesting” features from a systems perspective. Here are some important properties your system should have:
The system must support multiple, autonomous agents (either human or automated) contending for shared resources and performing real-time updates to some form of shared state.
The state of the system should be distributed across multiple client or server nodes. – The only centralized service should be one that supports users logging on, adding or removing clients or servers, and other housekeeping tasks.
The system should be robust – The system should be able to continue operation even if one of the participant nodes crashes. – It should be possible to recover the state of a node following a crash, so that it can resume operation.
Your team can choose your own application, and you will have wide latitude in the overall and the detailed design of your implementation.