The assignment revolves around developing a straightforward gaming application comprising several key classes such as ComputerPlayer (an abstract base class), Get15GUI, Get15Model, NaivePlayer, and SmartPlayer. These classes interact cohesively as depicted in the BlueJ-generated class diagram. Both Naïve and Smart players extend from the abstract ComputerPlayer class, implementing unique strategies for gameplay. The design emphasizes a straightforward inheritance structure that could be refined to minimize code duplication by centralizing common functionalities in the parent class. Testing is performed exhaustively using both GUI tests and unit tests with Junit, focusing on specific scenarios like game resetting post-rounds, ensuring no residual bugs remain. This project not only enhances software development skills but also emphasizes strategic problem-solving from design to debugging phases.