Consider the following specification.
Swansea University is planning to develop an online system for allowing students to choose x optional modules out of n options (where x n). Each module information must include a title, a module code, a module coordinator, and a limit on how many stu- dents can enrol in the course, and a student must have a unique identity number. Now, the system should allow a student to change their mind within a given period of time, and transfer to another module given that there is still a space available in that module. Naturally, the expectation is that this system will be a part of a multi-threaded program allowing many students to enrol and/or transfer modules concurrently.
You can ignore the time period for the purpose of this assignment.
In this assignment, your task is to design and implement an object oriented program (in Java 8) focusing on the correctness of the core concurrent functionalities: multiple students enrolling and transferring modules (with limits on numbers) independently. Please also include a short simulation application that uses your design (i.e. classes) and demonstrates these functionali- ties.