CS 564 Course Project
Spring 2000
Introduction
A major component of the course (and your grade) is the MinirelY2K project
that will allow you to learn how to build a database system. You will build
a working single-user DBMS that can execute certain simple SQL queries.
The objective is to learn how a DBMS is organized and what goes on inside
it when queries are executed. We will help you out by supplying the topmost
and lowermost DBMS layers. The topmost layer is a parser that parses SQL
queries and calls appropriate functions in the lower layers to perform
relational operations. The lowermost layer is the disk I/O layer which
reads and writes pages from and to the disk. In your case, the disk will
just be the UNIX file system.
You will implement the project in four parts. At the end of each part
we will take a checkpoint and evaluate your work.In Part1 you will implement
a class for storing variable-size records on pages. In Part
2 you will implement a buffer manager. Part 3 involves implementing
heap
files - a collection of pages. Part 4 is concerned with implementing
database catalogs and various
utilities.
Finally, in Part 5 you will implement a number of relational operators.
At the end of it all, you will have implemented a miniature DBMS. It will
not do everything that a commercial DBMS does, but it should be able to
handle a fairly useful set of queries. Hopefully it will not have any Y2K
bugs. While doing this project you shall learn how to tackle large
programming projects and in the process have fun as well! Good Luck !
Logistics
The entire project will be done in C++. For many of you, this is likely
to be the biggest programming project you have ever done so far and so
it might be useful to keep the following points in mind.
-
Platform : The project will be compiled and tested on the CS department
Sun Solaris machines using the latest supported g++ compiler. . You are
free to do some development using other platforms but you must make sure
that your project works with the official configuration.
-
Warnings : One of the strengths of C++ is that it does a lot
of compile time checking of the code (consequently reducing run-time errors).
Try to take advantage of this by turning on as many compiler warnings
as possible. The makefile that we will supply will have -Wall
on as default.
-
Tools : Always be on the lookout for tools that might simplify your
job. Example: make for compiling and building your project, makedepend
for
automatically generating dependencies, perl for writing test scripts,
purify
for tracking down memory errors, gdb for debugging and cvs
for version control. While we will not explicitly educate you about each
of these, feel free to seek the instructor and TA's advice on these matters.
-
Software Engineering : A large project such as this requires significant
design effort. Spend some time thinking before you start writing code.
-
Partners : Each project should be done by two people. It is unlikely
that one person will be able to finish the project (no concession will
be made to single person teams). Therefore it is in your interest to locate
a suitable partner who you can work with for the whole semester. In real
life, all software development is a team effort and you will be well-served
if you can pick up some team managment skills during this project. Disagreements
can and will happen and it is your responsibility to get the project going
regardless of differences. Both members of the team will get the same project
grade.
Evaluation
As far as possible, everything will be done electronically. All parts of
the assignment will be available from the course home page. The code that
we will provide will be available in the course directory. When you are
done with a part of the project, you will submit all your source code by
copying the files over to a designated directory. We will compile, run
and test your programs and post the grade. When evaluating your projects
we will look for the following:
-
Correctness - 70 %
-
Style
- 20 %
-
Comments - 10 %
Due Dates
You will be required to submit your source code at the end of each part
for evaluation. You can then start working on the next part. Since the
later parts build on and use the code for the previous parts, you have
two choices: you can either use the code you yourself had written for the
previous part or you can use the code that we shall supply once the due
date for a part is over.
All submissions are due by 12 NOON. NO LATE SUBMISSIONS WILL BE
ACCEPTED UNDER ANY CIRCUMSTANCES. Be sure to start early and turn
in whatever you have by the deadline.
The final thing that you should note is that all topics covered in the
project will be fair game for questions during the midterm and final. So
make sure you know about what you (and your partner) did for the project.
A Reminder
We believe in the highest standards of academic integrity. The project
implementations of each group must be completely distinct from each other.
You will not share any code across groups. Nor will you attempt to use
any code from previous offerings of this course. All the code that you
submit must be written by you and you only. Deviations from this will be
punished to the fullest extent possible.
Let the project begin ....