CS346 - Spring 2011
Database System Implementation

RedBase Part 5: The Personal Extension
Proposal Due Wednesday May 11
Implementation Due Thu.-Fri. June 2-3

The last part of the RedBase system you will implement is the Personal Extension (EX). This part gives you the opportunity to implement additional features that you've thought about along the way, more advanced or sophisticated techniques in a part of the system that interests you the most, or a new system component not included in the basic RedBase project.


Date Time Event
TBA TBA Extra office hours (proposals)
Wednesday May 11 11:59 PM Proposals due
Thursday-Friday June 2-3 will sign up Final project demos

Scope and Modifications
The personal extension should comprise as a minimum approximately the same amount of programming effort as, say, the RM component of the basic project. One of the motivations behind the formal proposal process is for us to identify extensions that are likely to be far too much or too little work (in addition to looking for obvious missing pieces or design flaws).

Nevertheless, even after proposal feedback, students often make unanticipated discoveries about their extensions once they are into the programming process. The extension may turn out to be much more or much less work than anticipated, or the overall design may need to change. Your proposal should be considered as a guide and not a contract -- it's no problem to revise your extension along the way, as long as when demo time arrives you've implemented a complete and interesting new feature.

The Proposal
Your proposal should consist of the following parts:

  1. A statement of the general functionality of the proposed extension.

  2. A statement of which components of the basic RedBase system you will need to modify or extend to accommodate the extension: PF, RM, IX, SM, QL, and/or the parser.

  3. A description and/or diagram of the overall system design of the extension, including how the extension fits into the rest of RedBase.

  4. An interface specification for the most significant C++ classes and methods you expect to implement for the extension.

  5. An informal description of the functionality of each class and method in the interface.
As a guideline, try to make your proposal resemble the documents/lectures on previous project parts. Don't forget that the extension proposal will count toward 5% of your final grade, so it's worth putting some effort into it. We'll be looking for a nicely thought out and well-specified extension of an appropriate scope, exhibiting an understanding of the RedBase system and of database system architecture and implementation in general. Please try to keep your proposal to approximately 3-5 pages.

Although you are welcome to share general ideas with your fellow students, we ask that proposals be conceived and written up by each student individually. For detailed help or feedback please see the instructor or TA.

The Implementation
Class names, constants, etc. that are part of your personal extension should begin with the prefix EX, even when the extension augments an existing component of the system. (This convention will allow us to clearly identify the extension within your code.) General implementation principles -- error handling, modularity, documentation, etc. -- are the same as for the other four project components. Obviously you will need to develop your own test suite for your extension.

In considering a particular extension, remember to keep in mind whether it may require you to modify the PF component or the parser. Modifying the parser to augment existing commands or add new commands is not difficult, especially if you have used Yacc in the past. See file Parser.HowTo, and feel free to obtain help from the TA. Modifying the PF component also should not be too difficult, as long as you're willing to plunge into someone else's code.

Demo Details and Hints
Remember that your project extension and the final demo count for 20% of your grade in the course. We suggest before your demo you go over the following points carefully, and set aside extra time to prepare for a smooth demo once your coding and debugging are complete.

Possible Extensions
Here is a list of potential extensions to get you started thinking about some of the possibilities. This list is certainly not exhaustive, and we welcome proposals for extensions not on the list. The extensions on the list have varying scope, so you may want to combine smaller extensions or propose a subset of a larger extension.