CPS 108: SCOOBI

Spring 1999



Your team should write a suite of tools to allow users to effectively search, list, and update files on their disk or web site.  The final version of this project will be a collection of at least four programs and at least two libraries.  The goal of this project is not to write a lot of code, but instead to leverage off of the wealth of C library code.  Your libraries should put a more proper object-oriented wrapper around the C functions.  Because of this, your programs will be penalized for excessive repeated code.  Once your programs are working correctly, your team should work on building small, modular components that can be reused in multiple programs.

Specification

SCOOBI, Scandir: an Object Oriented Browser and Indexer, is a suite of programs that leverage off already existing code, but provide simpler more powerful interfaces to the user.  This process is sometimes called "wrapping legacy code" and is a constant job in the computer industry :)

You should implement the following programs:

The programs should use code from the following  libraries:

Deliverables

To make this project more manageable, you must deliver your programs in pieces so your users (and TAs) can make sure you are making progress.
  1. Monday, March 1

  2. Working version of scandir and getopt library.  Prototype of the sools program that can list directories in simple alphabetic order, or by size, or reversed.  You may change these later, but you should turn in something that proves you have started working on the core of the project.
  3. Monday, March 8

  4. Working version of sools and prototype of goofi that indexes files and allows simple searches for words.  You may change these later, but you should be pretty certain of your design at this point..
  5. Wednesday, March 10

  6. Prototype version of update that can print out differences between given directory trees.  A more complete version of your goofi program that can index web sites as well as files.
  7. Friday, March 12

  8. Final versions of all programs and libraries.  You should bring your project artifact (printouts of user and programmer documentation and header files) to class -- even though the final source code is due later that day.