Team Project - Description
CS 420 - Spring 2009 - Ms. Katz

Goals
- to work as a disciplined team to develop a substantial project
- to apply software engineering techniques we're learning in class
- to build a project using multiple interacting objects and meaningful inheritance
- to use iterative enhancement to grow the software from an initial simple version to a fully-featured version
- to focus on high-quality development rather than a multitude of features

Overview
The developed software will support the creation of word-based puzzles such as word search puzzles and free-form crossword puzzles based on a user-provided list of words and terms. Other forms of word puzzles based on those words might also be generated.

The customer wants a means to provide a list of words and have multiple word puzzles created in an HTML format so that they can be used as paper handouts in a classroom or as features on a web site. The puzzles might also be used as input to other programs such as the provided example WordSearch. Created puzzles must be editable within the application in case the user wants to add, delete, or rearrange some words. The user should be able to save and read these puzzle files.

The Project
There are many variations of how this software might work. Features the final version should have include
  • create word search puzzles from user words
  • create free-form crosswords from user words
  • words in puzzles intersect
  • word search words are in all directions
  • read lists of words from a file
  • save generated word search puzzles in a form that can be read by the provided WordSearch program
  • usable graphical interface
  • save created puzzles in HTML format
  • save program information in a file format that can be read and edited by the program
  • multiple puzzles from existing word list
  • edit of the word list to add or delete words
  • mouse-clicks on puzzle have some effect
You may include many more features such as different sizes of puzzles, definitions, editable word lists, word list inspectors, puzzle inspectors, across and down indicators, numbers for where the word starts in the crossword, an undo capability, sound effects, puzzle titles, and other puzzle forms such as the anagrams or mid-crostic shown below.

There are many bells and whistles to add here. Some useful extras would be an answer sheet HTML, user-directed revision of word placement with point-and-click, and clicking on a word in the list highlights (perhaps circles) the word in the puzzle.

There will be variation in the developed projects. That is good.

Project development constraints include that it must be written in Java by your team, use objects extensively, use the Swing libraries, run as a standalone application (not a web-based applet), and execute on Windows, Mac OS X, and Linux (as in our lab). While having reliable, usable, maintainable, efficient, and correct code is important, the development process is the focus of this project. Documenting how you developed this as a team is a crucial aspect of the project.

Example Puzzles
I used the word list below as input to my program to generate the two word search puzzles below. Note that the words do not go in all possible directions. This is not as compact as a hand-crafted puzzle, but the words do intersect. You can and should do better than this.

The free-form puzzle at lower right is the empty puzzle for the crossword at top. This one was hand-crafted. You should be able to create crossword puzzles as good as this. I didn't include definitions and am not requiring them in your program. But it would be great to have a way to do short definitions, numbers in squares, and across and down. Be creative.

The anagram puzzles normally don't have a word list but mid-crostics would. These particular words have some unique letters (only object has a j; only quality has a q, only software has an f). So they didn't make great anagram jumbles. Bigger word lists might be easier. Solve these by unscrambling the anagrams and placing the word's letters in the spaces provided before the word. Then unscramble the anagram formed by the the circled letters to find the mystery word.

Note that anagrams and other puzzle forms beyond word search and free-form crosswords are not required.

Words
software
design
test
quality
object
pattern
model
view
build
tool
team