Lectures: Tuesdays and Thursdays 1:25-2:40pm, LSRC B101
Instructor: Jun Yang
Graduate TAs (GTAs): Yihao Hu, Yuxi Liu, Haibo Xiu
Undergraduate TAs (UTAs): Sophia Yang, William Zhou
Contact: compsci-516@duke.edu or private Ed posts for private matters; all inquiries of general interest should use Ed. Emailing individual instructors or TAs will have much longer delays.

This is a graduate-level database course that covers the principles and design of database management systems at an advanced level. Topics include relational model and language, storage and indexing, query processing and optimization, parallel and distributed data processing, transaction processing, as well as selected advanced/research topics.

A note on prerequisites and comparison with COMPSCI 316: COMPSCI 316 is the undergraduate database course at Duke. It is not a hard prerequisite for COMPSCI 516, but to do well in COMPSCI 516, you need to have a background in computer science, with good programming skills (we mostly use Python in this course) and a solid command on basic data structures, algorithms, and systems. COMPSCI 316 and 516 cover database systems from both application (how to use them effectively) and implementation (how they work internally) perspectives, but 316 focuses more on the former and 516 more on the latter. There is about 50% overlap in topics between the two courses. Both courses have a substantial team-based course project. For those who have take COMPSCI 316 or equivalent, they must pursue a project that focuses on implementing database systems internals; for others, they have the additional project option of building a full-stack (database-backed) web application (which is the same as COMPSCI 316).

We recommend (but not require) the following book: Database Systems: The Complete Book, by Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom. 2nd Edition. Prentice Hall. 2008. See the publisher’s book page and the Amazon book page. Relevant chapters for reading are posted on the schedule page.