CS 432 Fall 1999

Introduction To Database Systems 

Information about the final: The final takes place on December 10 at 9am in Olin 155. Check out this page for information about other classes. The final is closed book, closed notes, the same style as the two prelims. The time allocated for the final is 2 hours and 30 minutes. About 40% of the material in the final will cover material from Chapters 17 to 21, the remainder will be material from the earlier chapters. The style of the exam will be similar to the two prelims. Note that the exam counts 20% of your total grade.

 

 What's new?

 

 Location and Hours

 

 Course Description

CS 432/433 provides a basic introduction to the design and development of relational database management systems (DBMSs). A number of fundamental DBMS concepts will be covered in the course. You will learn the theory 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 is high! If you are also enrolled in CS433, you will gain further development experience by building full-fledged web-based end-to-end database applications. 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 CS432 workload, here's what the course involves:

 

 Pre-Requisites

CS432 will assume knowledge of material covered in CS211 (Computer and Programming) or CS212 (Structure and Interpretation of Computer Programs). CS410 (Data Structures) 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 (Systems Programming and 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 knowledge of C++ programming. C++ will not be 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 two. The purpose of the project is for each team to build parts of 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 (20%) of your grade for that assignment. You do not have to change project partners for every 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

Yes, there is no rule requiring you take both together. However, I suggest that you do, since you will learn more from it.

Yes, but I would not recommend it.

Your best option is to learn C over the next year and enrolling for CS432 in Fall 2000.

Yes! There is a lot of project work -- which involves programming. Whether you find it time-consuming or not depends on your comfort with C++ programming. As for the lecture material, much of it is probably new to you.

It is crucial. Since I use lecture transparencies, I will provide copies before each class. However, much of what I teach is not written on the transparencies or directly available in the book. I urge you to attend class and participate in discussion of the topics.

 

 Course TextBook

The primary text is : "Database Management Systems (Second Edition, 1999)" by Raghu Ramakrishnan and Johannes Gehrke. 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 tentatively based on the following percentages:

Exams:

  1. First preliminary exam: October 5. (10%)
    Phillips 203, 7:30pm
  2. Second preliminary exam: November 11. Non-cumulative. (10%)
    Phillips 101, 7:30pm
  3. Final exam: 12/10. Cumulative with emphasis on the last third of the course. (20%)
Assignments: (If an assignment is worth x%, then the maximum number of points that you can receive is X.)

 Professor

 Teaching Assistants