CSE 303, Autumn 2009
Homework 2B: anagram++

Due Tuesday, October 20, 2009, 11:30 PM
50 points total


For Part 2B, you have a choice of what to do.  Also, since I am announcing this two days late, it will now be due on Tuesday, October 20, 2009 @ 11:30PM.

Choice I: for those of you who (probably) were writing scripts for the first time and feel that you "got it done" but don't feel that it's clean enough, good enough, fast enough, etc.
Choice II: for those of you who don't feel that there is much improvement left in your 2A scripts.

Both choices have the same deadline, earn the same points, etc.

Choice I:

The objective of this choice is for you to do what we as programmers should do more often -- rewrite our programs, because the process of writing them the first time teaches us better ways to write them again later on.

Rewrite -- I recommend from scratch -- your solution to 2A.  Added requirements:
Grading will be based on a combination of

Choice II:

The objective of this choice is for you to push your shell script programming skills farther.  Look at the site http://wordsmith.org/anagram/ -- which creates anagrams of multiple words from multiple words.  For example, if you enter "computer science" you get a (large) number of anagrams including the following (for which I've reordered a few words for fun):

Comic Cup Entrees
Necrotic Scum Pee
Teen Cop Rice Scum

Your assignment is to provide, in batch form, the same basic service as this anagram server.  That is, you must accept multiple words as input and find anagrams comprising multiple words in the dictionary.  I have not done this, so it might be harder than I think (and I don't think it's trivial).  You should use the same dictionary as in 2A (I couldn't find quickly what dictionary this anagram server uses), and you should follow the non-alphabetic character rules listed in Choice I above.  (You will, of course, allow multiple parameters as input to your script, to enter multiple words.)   Call your script multigrams, and provide a test-multigrams script for testing.

Grading will be based on a combination of
You are allow to add extra bells and whistles, such as those allowed in the advanced query engine on the server (http://wordsmith.org/anagram/advanced.html).  However, bells and whistles that are included at the cost of basic features will hurt your grade, not help it.

Turn-in information

Both choices will be turned in via Catalyst (for which I will try to get the link right this time).  Follow the same directions as in 2A for creating a hw2b.tar.gz file to submit.