CS 432/433 : Spring 1997

Introduction To Database Systems


        Lectures:               1:25 -- 2:40PM, Tuesday and Thursday
        Place:                  Thurston 205,
        Final Exam:             May 13, 12 -- 2:30PM 

        CS433 Session:          7:00 -- 8:00pm, Monday or 
				3:35 -- 4:25pm, Friday
	Sessions' Place:	Upson 111



Contents


Course Description

CS 432/433 provides a basic introduction to the design and development of database management systems (DBMS's). The database industry is growing and thriving, and the demand for knowledgeable database engineers is much greater than the supply. The database research community is also active, and there are always new problems to be addressed because of the explosive amounts of data that people wish to access. A number of fundamental DBMS concepts will be covered in the course -- click here for a tentative lecture schedule. You learn the concepts behind database systems, the issues that affect their functionality and performance, and what it takes to build a database system. You do not learn the details of how to use specific commercial databases, or the intricacies of SQL programming. However, after finishing CS432/CS433, you will be able to pick up this material from a book if you should need to.

In the past, CS432 has been a purely lecture-based course, while CS433 has involved developing a programming project. For Spring 97, a significant part of the project development is moved into CS432. As you read about the project, you will see that it involves four large software components. In CS432, you will build two of the four components -- the other two components will be provided to you. If you are also enrolled in CS433, you will build all the components yourself. In order to get a real understanding of the issues involved in building database systems, I strongly suggest that you enroll for both CS432 and CS433. If you enroll for just CS432, you may take away a lot less from the experience.

In terms of workload, here's what the course involves:


Pre-Requisites

CS432 will assume knowledge of material covered in CS211 or CS212. CS410 is a pre-requisite because we will be studying (and implementing) complex disk-based data structures. If you have not taken CS410, you need to convince me that you have enough background to pick up this material. It helps if you have taken other programming-intensive courses.

An important pre-requisite is a knowledge of C++ programming or the ability to pick this up. C++ will not be explicitly "taught" in this course, but you are expected to use to for all your assignments. If you have never used C++ before, but have used C or Java and are comfortable with it, you may be able to pick up the necessary C++. If you haven't used either C or C++ before, you may lack the pre-requisites to complete the course satisfactorily. There are pointers to some C++ tutorial material later in this section. The C++ programming assignment handed out on the first day of class may help you identify your weaknesses and correct them.


Development Project

The term project is an important part of the course, and will involve a significant amount of C++ programming. All projects must be performed in teams of three (you choose your project partners). The purpose of the project is for each team to build a working single-user relational database system. You will start almost from scratch -- a few basic components may be provided to you. By the end of the course, you will have built a simple DBMS by completing four separate assignments. If you are enrolled in CS432 and not in CS433, you will do two of the assignments, and use code supplied by the TAs for the other two assignments.

The project uses the MINIBASE software as its template. In most of the assignments, you will be given C++ class definitions with function templates. You will need to actually implement the functions. A significant part of the complexity of software design is specifying the interfaces between components -- this task is performed for you. However, actually implementing the various interfaces involves several thousand lines of code. At the end of the project, you will understand the basic relational DBMS concepts because you have implemented them. Each of your assignments builds upon the code written in the previous assignments. At the end of every assignment, you have the option of throwing away your code and instead using code supplied by the TAs. While this may make it easier for you to complete the rest of the project, you will lose a specific percentage of your grade for that assignment. As you proceed, you will learn some basic software engineering by osmosis.

The projects and assignments will use Visual C++ on the NT machines. If you like, you can do your implementation at home on personal machines -- however, it is your responsibility to get the code to work on the departmental machines (since the TAs will test the code here).


FAQ


Course TextBook

The primary text is a beta edition of a new book on database systems : "Database Management Systems" by Raghu Ramakrishnan. This book contains many more details than are in most other introductory database books. It is also associated with free software for an instructional database system "MINIBASE", which we will use in class assignments. The textbook is available in the campus store for $46. Here are other textbooks which could be used as references:


Grading Policies

The grades for CS432 will be assigned based on the following percentages:

The prelim exam will be on ???? at ??? in Upson ????. It will be set to be comfortably finished in 1.5 hrs, but an extra half hour will be provided for those who need it. Likewise for the final exam. The final exam will focus on material not tested in the prelim, but the material covered in the earlier part of the course may form background for some of the questions.


Professor

Teaching Assistants