CompSci 316 (Fall 2012):
Introduction to Database Systems

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


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 CompSci516 (Data-Intensive Computing Systems), CompSci316 emphasizes more on how to use a database management system (DBMS) to build databases and database applications, instead of how to develop a data processing backend itself. Nevertheless, we will study plenty of DBMS internals in order to use a DBMS more effectively.


Instructor: Jun Yang
Email domain:, user: junyang (address is user@domain)
Office: D327 LSRC
Office hours: Tuesdays 2:40-3:40pm; Thursdays 12:25-1:25pm and 2:40-3:40pm; or by appointment

Email domain:, user: rozemary (address is user@domain)
Office hours: Mondays 1-2pm (D301 loft LSRC); Wednesdays 4-5pm (D309 LSRC); Fridays 5:30-6:30pm (D301 loft LSRC)

Time and Place

1:25-2:40pm on Tuesdays and Thursdays; LSRC D106.

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 Sakai

Most of the course materials, including the syllabus, lecture notes, reading assignments, homeworks, programming FAQs, etc., will be available through the course Web page (

There is an email address that reaches everybody in the class as well as the instructor and the TA: domain:, user: compsci316 (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.

You can also send anonymous feedback to the instructor.

We will use the Sakai course management system for grades and project discussion.


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. You will receive more information about the virtual machine image 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. For more information on obtaining and using Gradiance, please see Getting Started with Gradiance.


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. Gradiance deadline is hard; no late submissions will be considered. Parts of the non-Gradiance homework that are submitted late will receive an automatic deduction of 5% per hour late, and will receive no credit after the sample solution becomes available. Exceptions will only be made in the case of documented medical/dean's excuses; follow the standard university procedure for filing these excuses.

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 Wed Oct 24 22:09:11 EDT 2012