CS 564 Project Stages 3-6: Overview
Fall 2014

Introduction

These project stages will enable 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.

At the end of each stage we will take a checkpoint and evaluate your work. In Stage 3 you will implement a buffer manager. Stage 4 involves implementing heap files - a collection of pages that is used to hold a relation. Stage 5 implements the database catalogs and various utilities. Finally, in Stage 6 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. While doing these stages you shall learn how to tackle large programming projects and in the process have fun as well! Good luck!

Logistics

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

Evaluation

As far as possible, everything will be done electronically. All parts of the assignment will be available from the course web page. The code that we will provide will be available either on the course web page or in Learn@UW. When you are done with a stage, you will submit all your source code by copying the files over to a designated dropbox folder on Learn@UW. We will compile, run and test your programs and post the grade. When evaluating your stages we will look for the following:

Due Dates

You will be required to submit your source code at the end of each stage for evaluation. This will usually be 2 weeks from the day the assignment is given out unless specified otherwise. You can then start working on the next stage. Since the later stages build on and use the code for the previous stages, you have two choices: you can either use the code you yourself had written for the previous stage or you can use the code that we shall supply once the due date for a stage is over.

LATE SUBMISSIONS WILL NOT BE ACCEPTED EXCEPT IN CASES OF DOCUMENTED ILLNESSES OR FAMILY EMERGENCIES WITH PRIOR APPROVAL. 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 stages 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 about Cheating

We believe in the highest standards of academic integrity. The project implementations of each person must be completely distinct from each other. You will not share any code with others. 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 alone. We will use MOSS to ensure that your project represents your work.