CS 564 Course Project

Spring 2000


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 !


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.


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:

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 ....