You down with OOP? (Yeah you know me!)
For this project, you and your teammates are tasked with modeling a solution to a real-world problem using object-oriented and SOLID design principles, from ideation to implementation.
Before starting work on your project, you will need to submit three user stories as feature requests in your assigned GitHub repo. These will need to be approved by the instructor before you can begin coding. Your final project submission must enable the functionality described by your user stories.
- All work must be submitted in your team's assigned GitHub repository.
- The assignment can be completed in TypeScript or in Java.
- Must include at least 5 types of objects with meaningful relattionships to each other.
- One of your objects must be a custom data structure that provides for adding, removing, and updating items in a collection.
- Implement at least two custom exceptions.
- Write unit tests achieving 90% code coverage (using JaCoCo for Java or Jest for Typescript).
- Must include an integration test for each user story that demonstrates how your code implements the desired feature.
- Your solution must illustrate each of the SOLID principles.
- Each team member must contribute at least one submitted pull request containing working code and tests.
- Include a README for your repo describing the problem you're solving, the solution, and how you would improve your solution.
- Your presentation should be no more than 10 minutes with a maximum of 10 slides.
- Each member of the team must speak during the presentation.
- Your presentation must address the following questions:
- What problem were you attempting to solve?
- How does your design address the solution?
- How did you address each of the SOLID principles?
- How would you improve on your solution?
Design a CLI that allows users to interact with your application. Check out the code in lesson_10 for an example in TypeScript, or this file for an example in Java.
- Submit three user stories (Monday, 11/4, 5PM ET)
- Receive approval for your user stories (Tuesday, 11/5, 1PM ET)
- Finish code commits (Friday, 11/8, 1PM ET)
- Give presentation (Monday, 11/11, 1PM ET)
Your grade for this project will amount to 25% of your final grade in the course.
- 50% of your project grade will be composed of a team score. Your final solution and presentation will be assessed on how well it meets the described functional and technical requirements. Work submitted after the assigned deadline will result in a deduction of points.
- Completing the extra credit will enable up to an additional 50% increase to the team score component.
- The remaining 50% of your grade will be composed of an individual score. The individual score will be computed based on survey feedback from your teammates and the instructors/TAs regarding your technical ability, communication skills, and teamwork contributions.