Ammann/Offutt, 2nd edition, Exercises Chapter 3 (page 50-52). Do Exercise 9 (equals()/hashCode()).
Make it easy to evaluate your work. Specifically, since you are evaluating different versions of same code, provide evidence of execution (screen shots) at each phase, and briefly describe all of your work.
The deliverable is a report, as opposed to executable code and tests.