CS 112
Homework 10
Part II of Final Project
Due: Thursday, April 28 by 10:30 a.m. (before class)
15 Minute In-class presentation on Th April 28.


The second part of the final project asks for the implementation in Java of a comprehesive set of tree manipulation functions. You will "present" the project to the whole class on the last day of the seemster. In addition, you will run the program for me and show me its various features, as well as be ready to answer any questions I might have regarding the way it was done.

The program builds on the design you've done individually during last week by reusing (and perhaps enhancing) the following features:
  1. A Tree abstract data type implemented as a Java class. The implementation (which extends the one you have already done for binary trees) must be done with a list of children for each node (i.e. not just bounded degree). It must contain methods for:
  2. A GUI user interface. There should be options for:
  3. A mouse interface for choosing the position of the vertex currently being inserted. Warning: this is not trivial, but you have seen enough examples with mose clicks to be able to do it. The trickiest part is to recognize which is the vertex on which you have clicked. For this, you must store the clicked point and search it in the set of nodes.
  4. At least one creative feature of your choice. A few options are listed below (see additional features).
  5. Technical requirements:
  6. In addition, you must go over all of your homeworks, select the last and best working version of each solution, collect them all into a directory called AllHwk, tar and gzip it and make a link to it from the project html page. tar and gzip.
To get a minimum passing grade on the project (C), you should submit at least an applet with a reasonable Tree class, a wired in example and a Print function. Building on this, and for increased final project grades, you will include new features. Please add them incrementally, test them thoroughly and be ready to submit the highest level version you have completed, rather than attempting a complete program that does not work at all. Remember that among the skills I am testing you on with the final project are your improved software engineering abilities, including the development and testing of software, code reuse, documentation and readability for easy maintenance.

Some additional features that you can implement include: Roughly: a complete solution up to 1 is worth a B, a complete solution up to 3 gives you an A-, and all - plus a working user interface - give you an A. "Up to" means "up to and including". "Complete" means everything: it compiles, it works, shows sound programming style, it is thoroughly tested, well documented, readable, nice user-interface, shows some creativity and is submitted in time.
Ileana Streinu