Carnegie Mellon University
15721 Database System Design and Implementation
Spring 2003 - C. Faloutsos



There are three graded parts to the project: the project proposal (10%), the progress report (10%) and the final report (80%). The proposal will be a short writeup describing what you plan to do and how you plan to do it. The progress report will be a more extensive writeup, describing the work performed up to then, and the revised plans for the whole project. It mainly serves as a `checkpoint', to detect and prevent dead-ends and other problems early on. The report will be a more detailed description of what you did, what results you obtained, and what you have learned and/or can conclude from your work. Proposals and final projects will be carried out in teams of 1-3.

The Project

You and your partner(s) should begin by selecting a topic for your project. A list of suggested projects gives some suggestions; you are free to pick a different topic if you have ideas of your own. The only constraint is that you'll need to get the instructor's approval on your choice of topic, meaning that you'll need to justify that the topic is interesting, relevant to the course, and challenging enough. Joint projects with other courses, for example, theory, AI or systems courses, are negotiable. However, the idea would be to allow you to do a single in-depth study, as opposed to two more shallow studies, so such joint projects will have to involve enough work to satisfy both instructors that you're doing your share for their course.

Once you have selected a topic, you should do some background reading so that you are capable of describing, in some detail, exactly what you expect to accomplish. For example, if you decide that you want to implement some new proposal for a multidimensional file structure, you will have to carefully read the paper that proposes the structure in order to know (1) what will be involved, and (2) what design decisions you will be faced with along the way. Once you have read up on your topic, you will be ready to write your proposal.

The Proposal

The proposal should describe what you plan to do for your project. It should describe the problem that you will be addressing, how you plan to address it, what tools (e.g., "yacc", Postgres, SP2, etc.) you will need for your work, what you expect to produce as a result of your work, and anything else that you think I should know in order to evaluate your plans. You should also describe what portion of the project each partner will be doing.

Your proposal should be approximately 6-8 pages long, typed (eg., latex/postscript), double-spaced, neat, and with pictures if they seem useful (`idraw' and `xfig' are good choices). Also, make sure that your proposal is pretty much self-contained. For example, do not rely heavily on references to explain what you will be doing. Returning to the multidimensional index example, don't just say: "We're going to implement Smith's Foo-Tree data structure [Smith86], and we will study the performance implications of his three suggested implementations of the Bar-Graph directory structure." Instead, you should briefly review the key ideas in the reference, and describe clearly the alternatives that you will be examining.

Important points:

The Progress Report

This should be a 10-15 page long report, and it is intended to serve as a check-point. It should consist of the same sections as your final report (introduction, survey, etc), with a few sections `under construction'. Specifically, the introduction and survey sections should be in their final form; the section on the proposed method should be almost finished; the sections on the experiments and conclusions will have whatever results you have obtained, as well as `place-holders' for the results you plan/hope to obtain.

Grading scheme for the project report:

The Final Report

Your final report is expected to be a 20-30 pages long report, treating in depth the agreed topic. A detailed grading scheme will be posted on the class web site in time.

The report for "theoretical" projects should include an introduction section, a survey section, your contributions (proofs, ideas, algorithms, simulation results etc.), problems for future research and a list of references.

For implementation projects, the report should include an introduction, a survey, your contributions (major design decisions, rationale, timing results), problems for future research, a list of references, a brief description of the developed modules, a user's manual and a programmer's manual. For implementation projects, careful packaging for distribution and a demonstration is also expected (a sample package with a 'makefile' is here - gunzip | tar xvf ; make ).

Due Dates

As announced in the course schedule

Last modified: 1/13/2003 by Christos Faloutsos