CPS 116: Introduction to Database Systems
(Fall 2004)

Course Information
Lecture Notes
Tentative Syllabus
Programming Notes
Blackboard (Grades)
Newsgroup (Discussion)


Course Description

This course is intended to give students a solid background in databases, with a focus on relational database management systems. Topics include data modeling, database design theory, data definition and manipulation languages, storage and indexing techniques, query processing and optimization, concurrency control and recovery, and database programming interfaces. In addition to these traditional topics, this course covers a sample of emerging topics such as XML and Web data management as well as advanced topics such as data warehousing and data mining. Programming projects are required.

Prerequisites: Familiarity with Unix and Java or C++. A good understanding of algorithms and data structures. Compared with CPS216 (Advanced Database Systems), CPS116 emphasizes more on how to use a DBMS, instead of how to build one. Nevertheless, we will study some DBMS internals in order to understand how a DBMS works so that we can use it more effectively.

Time and Place

11:40pm-12:55pm on Tuesdays and Thursdays; D106 LSRC

Throughout the semester, there will also be a number of discussion sessions conducted by the TA. They will be scheduled when needed, one week in advance.


Required: Database Systems: The Complete Book, by Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom. Prentice Hall. 2002.

Update 2004/08/26 You should purchase this book from Duke Bookstore. The regular edition is fine; it is no longer necessary to wait for the special value-pack edition with Gradiance access (which I mentioned previously). Those of you who have already purchased the book do not need to exchange it. I will be distributing Gradiance access codes in class.


Instructor: Jun Yang
Email: junyang@cs.duke.edu
Office: D327 LSRC
Office hours: Tuesdays 1:00pm-2:00pm and Thursdays 2:00pm-4:00pm, or by appointment

TA: Hao He
Web: http://www.cs.duke.edu/~haohe/
Email: haohe@cs.duke.edu
Office: D125 LSRC
Office hours: Tuesdays and Thursdays 4:00pm-5:00pm, and Fridays 10:00am-11:00am

Web, Newsgroup, and Blackboard

Most of the course materials, including the syllabus, lecture notes, reading assignments, homeworks, programming FAQs, etc., will be available through the course Web page (http://www.cs.duke.edu/courses/fall04/cps116/).

The newsgroup duke.cs.cps116 (available on news servers news.cs.duke.edu and news.duke.edu) is useful for posting questions that are likely to be of interest to the rest of the class. We very much encourage students in the class to post responses to questions. We will monitor the the newsgroup regularly, and post responses to questions that have not previously been asked or answered. Before posting a question, please do make sure that you have read all previous messages and that your question has not yet been discussed.

We will use the Blackboard course management system (https://courses.duke.edu/bin/common/course.pl?course_id=_21003_1&frame=top) for grades.

Finally, please check your emails regularly, as important course announcements will be sent via email.


For most of the programming work in this course, we will provide a Linux server running the IBM DB2 database system as well as other relevant software packages. You will receive an account on this server by the second week of the class. The account is only valid for the duration of the course and will be purged when the semester is over. Please be considerate in using this server since it is shared by all students in the class. Refrain from running anything unrelated to the course. Quit all your applications and log out after using the server (in the past, we have found idle XEmacs processes to be the top culprit in server slowdowns). If something terminates abnormally, kill any runaway process manually (e.g., J2EE application servers, if not shutdown properly, can leave dozens of Java virtual machines running).

Parts of the homework assignments will be done online on Gradiance, a system pioneered by Prof. Jeffrey Ullman. Gradiance can generate different problem sets on selected topics each time it is used, and it has a lab component that automatically tests your solutions on different inputs. One of the best features of Gradiance is that you are permitted to test yourself on a particular topic as many times as you like. We encourage you to continue testing on each topic until you complete the assignment with a 100% score. For each Gradiance problem set or lab, your score is the highest score achieved as of 11:59PM on the due date.

Through a special arrangement with Prentice-Hall, the textbook you purchase from Duke Bookstore will include a token that allows you to obtain a free Gradiance account. More information on how to set up and use your Gradiance account will be available when we assign the first Gradiance homework.


Presentation (optional)8.75%

There are four homeworks, with a mix of online Gradiance problem sets and labs, written problems, and programming problems. Late homeworks will not be accepted, unless there are documented excuses from a physician or dean.

There is a course project (done either individually or in groups of two). Details will be available in the third week of the class.

Optionally, students in groups of three can conduct a 75-minute presentation on a research topic in databases. This presentation can be used to replace one of the lowest homework grades. A sign-up sheet for the presentations will be available in the third week of the class.

Both midterm and final exams are open-book and open-notes.

Honor Code

Under the Duke Honor Code, you are expected to submit your own work in this course, including homeworks, projects, and exams. On many occasions when working on homeworks and projects, it is useful to ask others (the instructor, the TA, or other students) for hints or debugging help, or to talk generally about the written problems or programming strategies. Such activity is both acceptable and encouraged, but you must indicate in your submission any assistance you received. Any assistance received that is not given proper citation will be considered a violation of the Honor Code. In any event, you are responsible for understanding and being able to explain on your own all written and programming solutions that you submit. The course staff will pursue aggressively all suspected cases of Honor Code violations, and they will be handled through official University channels.

Last updated Thu Aug 26 14:48:40 EDT 2004