CompSci 316 (Fall 2013):
Introduction to Database Systems

Course Information   Lecture Notes   Assignments   Tentative Syllabus   Programming Notes   Homework/Project Submission   Sakai (Grades & Solutions)   Piazza (Q&A)


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 "big data." 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

TA: Risi Thonangi
Email domain:, user: rvt (address is user@domain)
Office: North 306
Office hours: Wednesdays 4-5pm; Thursdays 11:30am-12:30pm; Fridays 10-11am

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, Sakai, and Piazza

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 should be sent to this address. Specific questions should be directed to the instructor and the TA, or better yet, Piazza (see below for further information). Please check your email regularly, as important announcements and information will be sent via email.

We will use the Sakai course management system for grades and sample solutions. Sample solutions will be posted in the Sakai under "Resources."

For discussion and Q&A, we will use Piazza. You do not yet have a Piazza account, you will receive an email with sign-up instructions. Rather than emailing questions to the course staff, you should post your questions on Piazza, which will be monitored closely by the course stuff.

You can also send anonymous feedback to the instructor.


Thanks to a grant from Microsoft, you will have 6-month free access to Windows Azure, which allows you to run a virtual machine in the cloud for the assignments and project in this class. The virtual machine will run Linux. Details will be announced by 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 Mon Sep 23 09:40:29 EDT 2013