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
Teaching Assistants