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:
-
There will be at least four "large" project assignments. In each assignment,
you will be asked to write one component of a simple database system. CS433
students will extend all the assignments with extra functionality.
-
There will be one SQL programming assignment, probably using Microsoft
Access.
-
There will be a prelim and a final examination. These will be thorough
tests of the material covered in class.
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
-
Can I take CS432 without CS433?
Yes, there is no rule requiring you take both together. However, I suggest
that you do, since you will learn more from it.
-
Can I take CS433 without CS432?
This would be very difficult and an extremely large amount of work.
I would not recommend it.
-
I have not used C++ before. Should I enroll for the course?
Your best option is to learn C++ over the next year and enrolling for
CS432 in Fall 98.
-
Does CS432 involve a lot of work?
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.
-
How important is class attendance?
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" 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):
-
Korth & Silberschatz: Database System Concepts. McGraw-Hill, Second
Edition, 1991 (or Third Edition, 1996).
-
Elmasri & Navathe: Fundamentals of Database Systems. Benjamin-Cummings,
Second Edition, 1994.
Grading
Policies
The grades for CS432 will be assigned based on the following percentages:
-
Prelim : 40%
-
Programming assignments : 54%
-
Initial C++ assignment: 4%
-
Buffer manager : 10%
-
B+-trees : 15%
-
SQL assignment: 7.5%
-
Join algorithms : 10%
-
Recovery simulator : 7.5%
-
Take-Home Assignment : 6%
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
Office: 4108 Upson
Phone: 255-1045
E-Mail: praveen@cs
Office Hours: 1:15 -- 2:15PM Mo/Fr
Teaching
Assistants