Dr. Paul A. G. Sivilotti
Associate Professor
Computer Science and Engineering
Site Navigation
Lab 9: CVS and Swing
Logistics
General
This lab is completed as a team. Each team will have its own project directory which should be used to store a CVS repository for the group.
This lab handout includes the description of two different projects. Your team, however, should only tackle one of these projects. The decision of which project to do is up to you. The projects are of similar difficulty, have similar minimum requirements, and have similarly expandable scopes. In other words, both projects are fairly open ended! Your choice of project, then, is largely a matter of taste.
Minimum Requirements
In addition to compiling and running with basic functionality, your submission should also include: documentation in the form of javadoc HTML pages, testing code in the form of JUnit test classes, and a readme file that describes basic execution or installation instructions. In addition, you should strive to follow as many "best practices" as reasonable in your solutions including: separating interface from implementation, coding to the interface, properly using exceptions/assertions, implementing core methods, and logging.
Rough Grading Scheme
Your grade for this lab consists of two parts: the group grade (70%) and your individual grade (30%). For the group grade, your submission is evaluated along the following general categories:
- Correctness and functionality (30%)
- Coding style (30%)
- Documentation (20%)
- Your own testing (20%)
Project Descriptions
-
Word Mastermind
Mastermind is a 2-person game: one player creates a secret code and the other player makes guesses. The code maker scores each guess, thus providing some information to the code guesser. A fixed number of guesses are allowed. The code guesser wins if he succeeds in breaking the secret code before that number is exhausted.
The classic version of Mastermind involves codes (and therefore guesses) of length 4 and consisting of colors. A variant of this game uses codes of length 5 and which consist of letters rather than colors. A further constraint is that the code be a valid English word. Each guess receives a score (0-5) indicating the number of letters in the guess that are also in the secret code (independent of order). This variant is known as Jotto and more information can be easily found on Wikipedia.
For this project, you implement a graphical Jotto program. The program should allow 2 human players (sitting at the same keyboard) to play against each other, as well as providing a computer player to support 1-person play. Your program should read in a file of acceptable dictionary words to check the validity of entered codes.
-
Tag Cloud Browser
A tag cloud is a list of words where the font size of each word reflects its relative importance. The list can be sorted in a variety of ways, but alphabetical order is typical. Additionally, font color can be used to reflect a relative ordering property of a particular term. Thus, a tag cloud can succinctly present 3 separate degrees of information through ordering, size, and color of the individual words.
Examples of popular tag clouds for navigation include: Flickr, technorati, and del.icio.us.
Examples of tag clouds for visualizing information include: a recent presidential debate, and a history of presidential state of the union addresses.
This last example (for state of the union addresses) has four dimensions of information: alphabetical ordering of tags, font size, font color, and a slider at the top for browsing through time.
For this project, you implement a graphical tag cloud browser for generating and visualizing four dimensions of information (ordering, size, color, and a slider). Your browser should allow the user to load many different files. It should generate a tag cloud for each and support browsing through these clouds with a slider. Common-word elimination and cut-off thresholds should be easily configurable.