This programming assignment will exercise your skills in refactoring a code base to adhere to the Open-Closed Principle. You will refactor your original GeoHash and GeoDB implementations to provide better encapsulation and separation of concerns.
The topics that you will cover in this assignment are:
- Refactoring
- OO Design
- Open-Closed Principle
If you don't complete the assignment or your implementation has bugs, you still need to turn in your partial / broken implementation to receive feedback. However, you should make sure that your work compiles.
Tip: Commit and push to your repository frequently so that the instructor can see your incremental work. Particularly for people that struggle with the assignment, lots of commits will show the effort that you put in and raise your score. Also,
The tests for the assignment are contained in the edu.vanderbilt.cs.live3.GeoHashDBTest class. You can run this class as a JUnit test in your IDE or from the command line using "gradle test". Every time that you commit and push to GitHub, GitHub Actions will compile and test your code. You can view the results on the "Actions" tab in your GitHub repository.
If you don't complete the assignment or your implementation has bugs, you still need to turn in your partial / broken implementation to receive feedback. However, you should make sure that your work compiles.
Grading process:
- If you have a working implementation that passes all tests, you will receive a 100
- If you have a broken / incomplete implementation, your grade will be based on the number of tests that your code passes and the overall code quality.
- You may receive a pull request with code comments specifying aspects of your solution that you need to improve.
- If you receive comments, you will need to address the comments and commit the updated version within a week of receiving the comments.
- You may receive multiple rounds of comments before receiving a grade.
What to do:
- See the edu.vanderbilt.cs.live3.GeoHashImpl class for instructions
- You will likely build off of your GeoDB and GeoHash implementations.
- When your implementation is complete, make sure the most up to date version is committed and pushed to your assignment repository.
Warning! There may be typos, bugs, or other issues with the assignment. If you encounter a bug, typo, etc., please post to the course discussion forum to let the instructor know.