Lectures: Mondays and Wednesdays 3:05-4:20pm, Perkins 217
Discussion: Fridays 3:05-4:20pm, Perkins 217
Instructor: Jun Yang
Graduate TAs (GTAs): Fangzhu Shen, Mir Ravilov
Undergraduate TAs (UTAs): David Bian, Ina Ding, Arnav Jindal, Shawn Ma, Steven Peng, Jack Steel, Isabella Tang, Linda Wang.

Contact: compsci-316@duke.edu or private Ed posts for private matters; Ed for all inquiries of general interest. Emailing individual instructors or TAs will have much longer delays.

Overview: We intend this course to give you a solid background in database systems as well as managing and processing “big data” in general. Topics include data modeling, database design theory, data definition and manipulation languages (SQL and NoSQL), database application programming interfaces, storage and indexing, query processing and optimization, transaction processing, as well as a sample of other topics. Programming projects are required.

Prerequisites: COMPSCI 201 and one of COMPSCI 210 and 250, or consent of the instructor. You will need familiarity (or ability to quickly become familiar) with the Unix command line (such as “Terminal” in Mac OS).

Note on COMPSCI 316 vs. 516: COMPSCI 516 is the introductory graduate-level database course at Duke. 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, which by default builds a full-stack (database-backed) web application. In COMPSCI 516, you additionally have the alternative of working on the kernel of a database system for your project. If you are interested in system/platform software engineering and have good programming skills (we mostly use Python in both courses), we strongly recommend that you skip 316 and take 516 directly, regardless of your class year. Because of the content overlap between these courses, we do not recommend taking both; if you take one, you should be able to self-study the additional materials from the other, with less effort than taking another full course.