Skip to content

feat/lesson 17 #510

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 11, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions project_oop/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Project OOP
*You down with OOP? (Yeah you know me!)*

## Introduction

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.

## Prerequisites

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.

## Project Requirements

* 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.

# Presentation Requirements

* 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?

## Extra Credit

Design a CLI that allows users to interact with your application. Check out the code in [lesson_10](/lesson_10/libraries/src/cli/) for an example in TypeScript, or [this file](/lib/java/codedifferently-instructional/instructional-lib/src/main/java/com/codedifferently/instructional/quiz/QuizProctor.java) for an example in Java.

## Timeline

* Submit three user stories (Monday, 4/14, 5PM ET)
* Receive approval for your user stories (Tuesday, 4/15, 1PM ET)
* Finish code commits (Friday, 4/18, 1PM ET)
* Give presentation (Monday, 4/21, 1PM ET)

## Grading

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.