CIS 350 Machine Problem 3
Fall 2000

This assignment will provide you with an opportunity to examine the usefulness of a binary tree to maintain a list of words and their synonyms. The program you need to create is a scaled down version of a real writing style analysis program for use by the Composition faculty. You are also to write the technical documentation for the system support staff. You may work in teams of 2 or 3 if you wish.

Your program will need to read a list of annoying words and their synonyms from the file badwords-list.txt and store them in a binary search tree. There may be an arbitrary number of synonyms for each annoying word. The format of each line is:

< annoying word> < synonym>,< synonym>, ... ,< synonym>

Your program needs to read the file sample.txt containing a passage to be analyzed. You are to prepare a report listing the annoying words (classified as excessive use 4+ or slight tendency to use <4), replace each annoying word with a synonym, and display the edited data file. Please note, you should "rotate" the synonyms used to replace each annoying word.

After displaying the edited file, your program should prompt the user to make adjustments to the annoying word list using the commands below. For your final run type in the commands which appear in the file badwords-cmd.txt in sample.txt is processed again using the new list of annoying word synonyms.

  ADD < annoying word> < synonym>, ... ,< synonym>
    {adds a new node to the tree}

  DELETE < annoying word>
    {deletes an annoying word and its synonyms from tree}

  QUIT
    {halt tree editing and reprocess text}

The output from your program needs to include the following:

You may use either pointers or arrays as the means of implementing your binary tree. You are free to use any other ADT to house your list of synonyms (provided that you implement it and its operations as a class or object).

The final document for this program needs to contain the following information:

     Table of Contents

     Requirements Analysis
       (e.g. complexity discussion, design trade-offs, etc.)

     Design Document
       Procedural (e.g. module specification or equivalent)
       Architecture (e.g. structure chart or equivalent)
       Data (e.g. ADT's, Data Dictionary, etc.)

     Source Code (with comments)

     Quality Assurance 
       Description of Black Box and White Box Testing
       Summary of Data Runs

     Lessons Learned

In addition, you are to grade each team member's participation (0=none to 5=great) on the project - including yourself. You are also to list the activities completed by each team member on the program.

Assigned: 11-07-00
Date due: 11-28-00