Class newsgroup: csd.cmsc424.0101 (local to umd.edu).
We'll use this newsgroup for announcements and discussions. Please post questions and comments to this
newsgroup (instead of emailing them to the instructor or TA)
unless you wish to keep your comments private. This newsgroup is required reading for this course, and constructive
discussions are highly encouraged. (See note on class participation
Recommended Programming Books: Books
on programming with Oracle and PostgreSQL. You are free to pick any
books, but here are a couple of suggestions. (Again, please feel
free to pick alternatives based on your level of programming
expertise and preferred style. There will be nothing in the course
that depends on the specific books below.)
In addition to the above, books on programming with Apache and/or
other Web servers may be useful, especially for those who find it
difficult to pick up programming methods from online sources.
There is a lot of useful material (including code samples) on the
Web sites for the textbooks, so browsing the sites is recommended.
Optional references: Principles of
Database and Knowledge-Base Systems (vols 1 and 2) by Jeff Ullman;
Database System Concepts by Korth, Silberschatz and Sudarshan; SQL
for Smarties by Joe Celko (specially recommended); A Guide to the
SQL Standard by Date and Darwen; Foundations of Databases by
Abiteboul, Hull and Vianu. (Most of these books are on reserve in
Description: This course covers database
systems from the perspective of database designers and database
programmers (not to be confused with database system implementors).
Thus, a more accurate course title is ``(database (design and
programming)).'' The emphasis is on fundamental topics that should be
familiar to every computer scientist and good programmer. In addition
to traditional topics such as Entity-Relationship modeling, relational
database design theory, relational algebra and calculus, SQL, and
Datalog, the course also covers object-oriented and object-relational
databases, with topics such as ODL, OQL, and SQL3. For a more
detailed listing of course topics, refer to the textbook's table of
Schedule: Here is the proposed schedule. The actual schedule will
depend on factors such as how quickly we are able to cover material,
and feedback from the class.
Project: The programming project is a
very important component of this course. Not only does it provide an
opportunity to experiment with and apply the ideas discussed in class,
it also provides experience in teamwork and project management. The
project consists of designing, building, documenting, and
demonstrating a substantial database application. Students are
encouraged to pick an application domain that excites them, with the
caveat that it include a nontrivial database component. Here is a collection of some ideas that may help.
A series of project reports and
milestones should help keep the project on schedule. Project Guidelines.
Programming: This course assumes that
students have enough programming experience to be able to work in
teams of about four to independently plan, design, and implement a
substantial project involving a possibly new environment. Students
are strongly encouraged to make sure they have such experience. Most
students find database programming harder than it first appears
(unlike, say, writing device drivers, which people expect to be hard).
Please be prepared. Although the university maintains the Oracle
database system for class use, we will not be covering nitty-gritty
details of Oracle in class. (This course is not an Oracle tutorial.)
Further, students are encouraged to install and use other database
systems. Similarly, students are encouraged to program in a language
of their choice.
Grading: Grading is based on class
participation (5%), homeworks (15%), two quizzes (15%), a mid-term
exam (15%), a final exam (20%), and a project (30%). All exams and
quizzes are open book, open notes. You are free to bring with you any
resources that you find useful. However, no communications are
permitted other than between student and instructor or TA.
Class Participation: Students get class
participation credit for questions and comments made in during class
meetings, as well as for postings on the class newsgroup. Any other
service (e.g., pointing out that there's a tornado approaching) will
also be recognized. The objective is to get everyone involved in the
class, so please don't obsess about the 5%. If you're worried about
how well you're doing in this department, ask me after a few class
meetings. (In other words, you don't have to make yourself heard at
every meeting. However, if I don't recognize you by the middle of the
semester, it's a very bad sign.) If you're a quiet kind of person,
use the newsgroup to your advantage. Special note: If you are unable
to render your noise-making accoutrements (cell phones, pagers, PDAs,
watches, etc.) silent, please rid yourself of them before coming to
class. Disturbing the class is a serious disservice. If you have a
good reason for interruptions in class, make special arrangements with
me well in advance.
Experimental Feature: In past semesters,
class discussions have often digressed to non-database topics that
students found interesting. This semester, we'll experiment with
making such digressions a regular feature. I plan to devote a small
amount of class time to discussing general topics in Computer Science
and Technology. Everyone is encouraged to suggest a digression. (Use
the newsgroup.) Since this part of the class is experimental, the
material we cover during such digressions will only be lightly tested
(i.e., any quiz or exam questions related to this material will be
very easy). If you any have concerns or suggestions, please contact
Homeworks, Quizzes, and Exams: We'll
post assignments and solutions here. (You may need to authenticate
yourself using the username and password announced in class for some
of these files.) You may want to take a look at the Web sites from
earlier semesters (links below) for sample assignments, quizzes, and
Programming Homework 1: PDF; PostScript.
Due 10 Sep 2002 at the beginning of class.
Usenet: Since a fair number of people seem to have a poor
understanding of how to use Usenet newsgroups, I am putting this link
here and asking that everyone read (or at least skim) these articles.
Pay particular attention to the following (which are required reading):