CPS 116 (Fall 2011):
Introduction to Database Systems

Course Information
Lecture Notes
Tentative Syllabus
Programming Notes
Homework/Project Submission
Blackboard (Grades)


Course Description

This course is intended to give students a solid background in database 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. Besides relational databases and XML, this course also samples a number of other topics related to data management, such as Web search, data warehousing, data mining, and data privacy. Programming projects are required.

Prerequisites: Familiarity with Unix and Java or C++. A good understanding of algorithms and data structures. Compared with CPS216 (Data-Intensive Computing Systems), CPS116 emphasizes more on how to use a database management system (DBMS) to build databases and database applications, instead of how to develop a DBMS backend itself. Nevertheless, we will study plenty of DBMS internals in order to use a DBMS more effectively.


Instructor: Jun Yang
Email domain: cs.duke.edu, user: junyang (address is user@domain)
Office: D327 LSRC
Office hours: Tuesdays 4:05-5:00pm and Thursdays 1:30-2:50pm and 4:05-5:00pm, or by appointment

Web: http://www.cs.duke.edu/~rohit/
Email domain: cs.duke.edu, user: rohit (address is user@domain)
Office: D104 LSRC
Office hours: Mondays 2-3pm, Wednesdays 2-3pm, and Fridays 2-3pm

Time and Place

2:50pm-4:05pm on Tuesdays and Thursdays; Allen 103.

Throughout the semester, there will also be a number of (optional) review sessions for homeworks and exams, conducted by the course staff. They will be scheduled when needed.


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

The first edition of the book is okay too, although it does not include some of the materials in the second edition that we cover in the course.

Web, Email, 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/fall11/cps116/).

There is an email address that reaches everybody in the class as well as the instructor and the TA: domain: cs.duke.edu, user: cps116 (address is user@domain). Only announcements, questions/answers, and comments of general interests should be sent to this address. Specific questions should be directed to the instructor and the TA. Please check your emails regularly, as important announcements and information will be sent via email.

We will use the Blackboard course management system for grades.


We will provide a VirtualBox virtual machine image that you can use to complete all programming work in this course. You will need a computer to install VirtualBox so that you can run this image. If you do not own a computer, we can create an account for you on the dbcourse.cs.duke.edu server, which you can access via remote login using ssh. This account is only valid for the duration of the course, and will be purged when the semester is over. You will receive more information about the virtual machine image as well as dbcourse accounts during the second week of the class.

Parts of the homework assignments will be completed online on Gradiance, an online service pioneered by one of the authors of the textbook, Prof. Jeffrey Ullman at Stanford. 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. You receive immediate feedback for each attempt, which avoids the shortcoming of the traditional submit-and-then-wait-for-grades assignments where one error in understanding can permeate solutions to multiple problems and does not get rectified until much later. We encourage you to continue testing on each topic until you complete the part of the assignment with a 100% score. Gradiance access is free. More information about getting Gradiance access will be available during the second week of the class.


Grading is done on an absolute, but adjustable scale. In other words, there is no curve. Anyone earning 90% or more of the total number of points available will receive a grade in the A range; 80% or more guarantees a grade in the B range; 70% or more guarantees a grade in the C range; 60% or more guarantees a grade in the D range. At the discretion of the instructor, the grading scale may slide down (i.e., grades go higher), but it will not slide up.


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

There is a course project (done in groups of up to four). Details will be available in the third week of the class.

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

Standards of Conduct

Under the Duke Community Standard, 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 Standard. 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 violations, and they will be handled through official University channels.

Last updated Sun Sep 11 21:40:09 EDT 2011