CS145 Introductory Information

Course Goals

The purpose of this course is to offer the student an introduction to the design and use of database systems. We cover object-oriented and entity-relationship approaches to design, followed by an overview of the relational model, how the OO and E/R models are expressed as relations, and how one uses a relational database system to create a database. SQL (Structured Query Language), the standard query language for relational databases will be learned and experienced.

We shall also learn some other database languages, both concrete and abstract, including relational algebra, Datalog, OQL (the object-oriented database emerging standard), and parts of SQL3 (the next relational standard). A Course outline is available.

It is not our goal to study database system implementation (e.g., how to build a system that processes SQL queries efficiently). Study of that very important subject begins in CS245A.

Time and Place


Tuesdays and Thursdays, 9:30--10:45, Skilling Aud.

Study Section

Mondays, 7PM in Bldg. 260, Room 011. Yu-May Chang will conduct these sections. They will not be televised, but SITN students are welcome to attend.

Course Personnel

PersonRoleOfficePhoneOffice HoursEmail
Jeffrey D. UllmanInstructor411 Gates(415) 725-480210:45AM - 12:15PM, Tues. and Thurs.ullman @ cs.stanford.edu
Yu-May ChangTA 193A Gates??? 11AM-12:30PM, Mon. and Weds.ymc @ leland.stanford.edu
Ankur JainTA 193A Gates??? 12:30-2PM, Mon., 2:30-4PM Weds.ankur @ cs.stanford.edu
Phyllis WinklerCourse Secretary495 Gates(415) 723-4377N/Awinkler @ cs.stanford.edu


CS 107 (programming languages) and CS 109B (introductory CS theory) are expected. Please discuss the matter with the instructor if you do not have something like these courses. Programming assignments will use the Oracle relational database management system and the C or C++ programming language. We do not yet have the details regarding how Oracle will be accessed (previous editions of CS145 used a Sybase system instead). However, we expect that we will use one of the clusters of Unix workstations on the second floor of Sweet Hall. To open an account on these machines, type open at the login: prompt and follow the instructions.

We shall assume that students are proficient already with Unix and C. (C++ is not required, but it is allowed for those who prefer to use it.)

SITN students can access the Unix workstations remotely via dial-in (try 415-498-1440) or telnet. If you have access to a Unix workstation at your site, including a full-fledged relational database management system that has an SQL interactive interface and a C application programming interface, then you may use your workstation. However, we will not make any exceptions for problems incurred by using your own computing facilities rather than those provided by Stanford.


The text for the course is A First Course in Database Systems by J. Widom and J. D. Ullman, Prentice-Hall, 1997. Copies have been ordered and are now in the Stanford Bookstore.

Students may also wish to purchase an SQL2 manual. Two recommended books are:

  1. Understanding the New SQL: A Complete Guide J. Melton and A. R. Simon, Morgan-Kaufmann, 1993.

  2. A Guide to the SQL Standard (third edition) C. J. Date and H. Darwen, Addison-Wesley, 1994. It is more succinct than the Melton-Simon book, but I personally find it a more useful summary of the SQL language.

These and several other books will be on reserve at the Math-CS library (Bldg.~380, 4th floor).

Class Newsgroup

There is a class newsgroup, su.class.cs145. You should put this name in your .newsrc file. It is possible to mail to the newsgroup by sending email to su-class-cs145 @ news.stanford.edu. We hope that such messages will be limited to notes of general interest to the class. Please check this newsgroup frequently for information concerning the course; we shall assume that all students are reading the newsgroup regularly.

Email Consulting

If you need a quick answer to a question, try sending email to cs145-help @ lists.stanford.edu. This list forwards to the TA's and instructor, and with luck you'll get a reply in a few minutes.

Webclass Grade-Tracking

We are using the Webclass server to post grades. You should register by accessing the CS145 page webclass.stanford.edu/~webclass/class/cs145.

Course Requirements


A feature (or bug?) of CS145 is that everyone writes their own database application. You do some work on the project each week, beginning with selecting your application, designing the database, obtaining and loading your data into a commercial database system, and finally writing a number of SQL queries, C programs with embedded SQL queries, and exercising other features of SQL.


Some conventional homework questions will be assigned each week, along with a step of your database application.


Midterm: In class, Thursday May 8, 1997, 9:30AM - 10:45AM. TV students may take it at work or in class (their choice).

Final: Tuesday, June 10, 1997, 12:15PM - 3:15PM. On campus, location to be determined (but probably Skilling Aud.). All local TV students must come to campus.

Grading Policy

The approximate weights of the four components are:

Assignments Policy

The assignments will generally be given out on Tuesday and due the following Tuesday. Assignments should either be handed in in class on the day due or given to Ms. Winkler by 5PM on that day. No late assignments will be accepted, but each student is entitled to one free extension of at most 48 hours. Exceptions to this policy must be supported by a doctor's note or other documentation.

In previous quarters, there has been difficulty using the L&IR-provided database system; it tends to collapse under heavy load just before assignments are due. This quarter, the system has been changed, and we hope that the problems will go away. However, database systems are not designed with the model of 100 students all trying to create and load databases at the same time, so we cannot be sure what will happen.

In the past I have had to stagger the due dates and times for critical assignments based on the first letter of your last name. I may have to do so again. Please be prepared for that possibility.

Honor-Code Policy

The basic presumption is that the work you do is your own. Occasionally, especially when working problem sets or writing programs (but never on exams!), it may be necessary to ask someone for help. You are permitted to do so, provided you meet the following two conditions.
  1. You acknowledge the help on the work you hand in.

  2. You understand the work that you hand in, so that you could explain the reasoning behind the parts of the work done for you by another.

Any other assistance by another person constitutes a violation of the honor code and will be treated as such.

We shall not deduct credit for small amounts of acknowledged assistance. Even working as a team on one of several problems in a problem set will not hurt your grade, as long as all members of the group acknowledge their collaboration. Such shared interest can be beneficial to all concerned. We do reserve the right to give less than full credit in circumstances where it appears that there has been large-scale division of labor, and you are not getting as much learning out of the assignment as you should. However, as long as you acknowledge your sources, you cannot get into Honor Code trouble.

If you have any questions about what this policy means, please discuss the matter with the instructor now.