CS 432/433 : Fall 1997

Introduction To Database Systems


        Lectures:               2:30PM -- 3:20PM, Monday, Wednesday, Friday



        Place:                  HO 320



        Prelim:                 Nov 18, 7:30PM, Bard 140



        CS433 Session :    ;  3:35PM Wednesday, PH 403

New Stuff

Here are sample questions for the prelim. Remember that this is not an exhaustive set of questions covering the whole syllabus -- rather it provides examples of the kind of questions that you may be required to answer.

Here are the PowerPoint slides for the lectures. 


Contents


 Course Description

CS 432/433 provides a basic introduction to the design and development of database management systems (DBMS's). A number of fundamental DBMS concepts will be covered in the course. You will learn the concepts behind database systems, the issues that affect their functionality and performance, and importantly, 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. You will also be able to find a great job!

CS432 is not a purely lecture-based course --- there is a significant component of C++ development. The programming workload in Fall 97 will be higher than when CS432 was offered in Spring 97. Those enrolled in CS433 will gain further development experience by extending the projects assigned in CS432. In order to get a real understanding of the issues involved in building database systems, I recommend that you enroll for both CS432 and CS433. If you go on to work in a job involving database technology, these courses will hold you in good stead.




 Workload

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. You will find that CS414 (Operating Systems) will help with some of the advanced topics taught later in the semester. While this is not a pre-requisite, I do encourage you to attend CS414 along with this course.

An important pre-requisite is a knowledge of C++ programming. C++ will not be explicitly "taught" in this course, but you are expected to use it for all your assignments. I will expect you to be comfortable with C++ at the level of CS213. We will be using Visual C++ on Windows NT. While the NT environment is easy to pick up, C++ is not. If you have used C and are comfortable with it, you may be able to pick up the necessary C++. If you have never used C or C++ before, or are not confident of your C++ programming abilities, you must get my approval to join the course, and I will probably advise you against it. The programming assignment handed out in the first week of class may help you estimate the level of programming competence expected.




 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 TAs and I will not be involved in this decision). 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.

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

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 : "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 bookstore. I want to emphasize that the contents of this book do not constitute the syllabus for the course -- the classroom lectures define the course content, and the textbook is a reference. Here are other textbooks which provide further background (but they are not required for the course):

 Grading Policies

The grades for CS432 will be assigned based on the following percentages: The prelim will be on Nov 18 at 7:30 in Bard 140. It will be set to be comfortably finished in 1.5 hrs, but an extra hour will be provided for those who need it.  The grade for CS433 will be determined by the extra assignment on the buffer manager and the final client-server application project. 

 Professor

 Teaching Assistants