Course
Description
CS 432 provides a basic introduction to the principles of relational
database management systems.
Prerequisites
CS432 will assume knowledge of material covered in CS211 (Computers and Programming) and CS312 (Structure and Interpretation of Computer Programs). CS414 (Systems Programming and Operating Systems) will help with some of the advanced topics taught later in the semester. While CS414 is not a prerequisite, we encourage you to attend CS414 along with this course.
An important prerequisite 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 expect that you are comfortable with C++ at the level of CS213. We will use
Visual C++. While the NT environment is easy to pick up, C++ is not. If you
have used C or Java, and you are comfortable with programming, you can probably
catch up with the necessary C++ knowledge in the first two weeks of the course.
The programming assignment handed out in the first week may help you estimate
the level of C++ programming competence expected.
Workload
Assignments
The five programming assignments are an important part of the course, and will involve a significant amount of C++ programming. All assignments except the first assignment 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 are 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 implement the functions. A significant part of the complexity of software design is specifying the interfaces between components -- this task has already been 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 database system 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.
The projects and assignments will use Visual C++ on the Windows 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 there).
Grading
Policies
The grades for CS432 will be assigned based on the following percentages:
Exams:
Assignments:
Policies
Instructors
Teaching
Assistants
Location
and Hours
Course
Textbook
The required textbook is: "Database Management Systems (Second Edition, 1999)" by Raghu Ramakrishnan and Johannes Gehrke. 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 that provide further background (but they are not required for the course):
CS432
versus CS433
CS432 is a course about database internals, whereas CS433 is a course about database applications. CS433 covers technologies such as Active Server Pages, Java Server Pages, Servlets, Perl, Cookies, JDBC, and XML. CS433 has only a very small teaching component. For the first few weeks, you will be guided with a weekly (small) homework that introduces you to a new technology. We will provide pointers to online material about a technology, but you have to learn the relevant subject by yourself in order to complete the homework. The homework is not graded, and we will just check that you have completed the assignment.
In addition, you will build one large web-database project
(for example, a website similar to amazon.com or ebay.com) throughout the
semester in groups of three to four students.
FAQ