CS145 - Spring 2002
Introduction to Databases
Course Content
CS145 provides the student with a comprehensive introduction to the design of databases and the use of database management systems for applications. We will cover the relational model and XML, including the XML query languages XPath and XQuery, and SQL - the standard language for creating, querying, and modifying relational and object-relational databases. From a more theoretical perspective we will cover relational algebra, relational design principles based on functional dependencies and normal forms, and the entity-relationship and object-oriented approaches to database design. A variety of other issues important to database designers and users will be covered, including indexes, views, transactions, authorization, integrity constraints, and triggers. Finally, we will consider several advanced topics such as data warehousing, data mining, OQL, Datalog, temporal databases, middleware, or peer-to-peer systems.

Written work in all topics is complemented by a significant project in which students build a database-backed online auction system with a Web interface.

Time and Place
CS145 meets Mondays and Wednesdays, 11:00-12:15, in Gates B01 (the Hewlett-Packard Auditorium). The first class is on Wednesday April 3rd.

Help Sessions
Each week there may be one or more optional help sessions covering topics ranging from programming issues to written problem hints and discussion. We have two weekly times reserved for help sessions: Tuesdays 4:15-5:30 PM and Thursdays 7:15-8:30 PM.

CS103B/X (Discrete Structures) and CS107 (Programming Paradigms) are expected but not absolutely required. CS145 should be accessible to anyone with a solid Computer Science foundation that includes a reasonable amount of programming (as in CS107) and knowledge of basic Computer Science theory (as in CS103). The programming project will use Unix, the Oracle database management system, and either the C and C++ programming languages or the Java programming language (student's choice). We will assume students are already proficient in Unix and either C/C++ or Java.

One textbook is required for the course. You may purchase either of the two books listed below. A First Course consists of the first ten chapters of The Complete Book, verbatim, and we will be using only those chapters in CS145. However, if there is any chance you will eventually take CS245 (Database System Principles), then you should purchase The Complete Book, which is the required textbook for that course.

Please note that the first edition of A First Course (Prentice Hall, 1997), although a useful resource, has a number of differences from the second edition. We will assume that all students are using the second edition, or equivalently are using The Complete Book.

Students may also opt to purchase a book about the SQL database language, although you should be aware that Oracle's version of SQL, which we will be using, may differ slightly. One reasonably good SQL guide is:

There are numerous other books on SQL available, as well as an entire shelf at the Stanford Bookstore devoted to books on Oracle. Copies of The Complete Book and the SQL guide mentioned above are on reserve at the Math and CS library (Building 380, 4th floor).

The components of the final grade will be distributed as follows:

More detailed information on grading of assignments and projects is provided in the Assignments page.

Students earning an A+ in the course (typically 3-5 students) will receive a personal letter of congratulations from the instructor, along with an invitation to enjoy lunch at the Stanford Faculty Club with Prof. Widom, the TA's, and the other A+ students. The A+ students also will be top candidates for CS145 TA positions in subsequent offerings of the course.

Incompletes are not offered as a grade option in CS145. Students are given incompletes only in the rare case of an incapacitating medical condition arising during the quarter and brought to the attention of the course staff in a timely fashion.

Course Conflicts
Students may be tempted to take another course at the same time as CS145 by watching lectures online and scheduling alternate exams. As stated in the Exams page, routine alternate exams will not be offered in CS145. The university strongly discourages students from enrolling in two classes given at the same time, and instructors are under no obligation to accommodate such students. If you provide an extraordinarily compelling case then an alternate exam may be given, but alternate exams are always oral exams given by the instructor.

Special Note for SCPD Students
While we understand the significant demands of taking a course while working, we would like to make it clear at the outset that no special exceptions can be made for SCPD students. Local SCPD students must follow the lectures, turn in the assignments, and attend the exams on exactly the same schedule as on-campus students. SCPD students are graded using the same criteria as on-campus students. Please ensure in advance that you will not have any business trips or important deadlines that conflict with the course, since no exceptions will be made. Also note that like on-campus students, for emergencies you are allocated four unpenalized late days for assignments (see the Late Policy in the Assignments page).