3. Project 1
3.1. General Project Rules
You must use Eclipse IDE, and you must use it to submit to Web-CAT. We won’t accept submissions any other way.
There are 4 projects during the semester, each has a 3-4 week lifecyle.
Each has three milestones, so about one/week.
P1’s first milestone is really easy (make minor changes to the starter kit and submit to Web-CAT), and is due at 11pm on Wednesday, September 3.
A major part of the project score is based on correctness, as defined by passing the reference tests at Web-CAT. We won’t tell you a lot of detail about what is in the reference tests.
A major part of the “correctness” score is adjusted by the quality of your own test suite (as defined by Mutation Testing coverage — we will discuss this later).
3.2. Project 1: Movie Rater Database
You will implement a “movie recommendation database”.
Movies have an abstract index (a positive integer).
Reviewers have an abstract index (a positive integer).
A review is just an integer score from 1-10 for a given reviewer/movie pair.
Besides storing, updating, and deleting reviews, you will support implementing a simple “similarity” score.
This idea is at the heart of “recommender” systems that permeate the internet. Recommender systems “recommend” things to you.
3.3. Data Representation
The data structures challenge is how to store the ratings.
A natural approach would be to use an array.
But there are not many reviews for any given movie, and not many movies are reviewed by any reviewer.
So if we used an array, most positions would have “empty” values.
We solve this problem by implementing a “Sparse Matrix”.
3.4. Sparse Matrix
3.5. What We Give You to Get Started
We specify the class name for the project (MovieRaterProj), an interface that you must implement (MovieRater), and the name of a class that implements MovieRater (MovieRaterDB).
This lets us write reference test cases for grading that make calls to the interface.
Reference tests do not write to System.out, or check the contents of System.out.
We give you some initial tests (MovieRaterTest) that are meant to demonstrate all the requirements related to formatting the interface method return values.
If we get questions indicating that we left something ambiguous, we will update the example tests for you to see.
Important service: We will check any tests added to MovieRaterTest against the reference implementation. This lets you verify that your tests are correct (meaning, that you have no misconceptions about the project requirements — if your tests are thorough).
The project design is pretty simple, because all that you really need to add is the implementation for the Sparse Matrix.