As noted in the introduction, the writing of much of the code for this problem is an assignment in two closed labs and an open lab programming project in one of the courses I teach. This page includes links to portions of the code that are not assigned (and are, in fact, given to the students in the course.)
This page also provides access to Complete Javadoc Documentation for all of the classes.
Page of links for non frames-enabled browsers.