CS 190D – Database System Implementation

Lectures: MWF 12:00-12:50pm @ PCYNH 121

Instructor: Arun Kumar

  • Email: arunkk [at] eng.ucsd.edu

  • Office: Room 3218 EBU3b/CSE

  • Office Hours: Wed 3:00-4:00pm

Teaching Assistant: Konstantinos (Costas) Zarifis

  • Email: zarifis [at] eng.ucsd.edu

  • Office Room: 3217 EBU3b/CSE

  • Office Hours: Fri 5:00-6:00pm

Piazza: CSE 190D

Announcements

  • New! Your final exam score and question-wise score breakdown are posted on TritonEd.

  • New! Here are the solutions for the final exam: PDF.

Course Goals and Content

This is a hands-on systems-focused course on the implementation of a database management system (DBMS), especially, a relational DBMS (RDBMS). RDBMSs are the cornerstone of large-scale data management in numerous application domains that define our modern world, including finance, insurance, retail, logistics, telecommunications, healthcare, governance, and education. Furthermore, concepts developed in the context of RDBMSs are indispensable for the underpinnings of the so-called Big Data and NoSQL systems that were developed for new applications such as Web search, e-commerce, social media, and advanced analytics.

This course will cover key systems topics in implementing an RDBMS: data storage, buffer management, indexing, sorting, relational operator implementations, a bit of query optimization, and a bit of transaction management and concurrency control. The implementation of newer Big Data systems such as Spark and MapReduce/Hadoop, as well as distributed NoSQL/key-value stores, in-memory RDBMSs, and streaming DBMSs will likely be covered too.

A major component of this course is hands-on C++ programming to implement two key components of an RDBMS, a buffer manager and a B+ Tree index, on top of a basic RDBMS skeleton that will be provided.

Course Format

  • The class meets 3 times a week for 50-minute lectures. All lectures are mandatory.

  • 2 programming projects. Students can work on projects either individually or in teams of 2. Students should email their team decisions to the TA before 11:59pm PT Thursday 4/11. All remaining students will be assigned to teams randomly by the TA.

  • A midterm exam and a cumulative final exam. If you miss an exam, you will get no credit for it unless you notify the instructor in advance with a certifiable medical or emergency reason.

  • 6 short surprise quizzes in class on random lecture dates. Each quiz will be only 7min long and will have 7 multiple choice questions that need to be answered using clickers. The grading is binary: if you answer at least 4 of the questions correctly, you get full credit for that quiz; otherwise, you get no credit for that quiz. If you are absent, you get no credit by default. If you miss a quiz due to a pre-notified and certifiable medical or emergency reason, that quiz will be discounted for you and your score will be reweighted accordingly. At the end of the class, only your 5 best quiz scores will be used for grading.

  • You are required to bring your iclicker to every lecture. Make sure to register your clicker on TritonEd before the second lecture.

Prerequisites

  • CSE 132A (DB Systems Principles) is necessary. It will also be heplful if you have taken CSE 120 (Operating Systems).

  • You should know, or be willing to learn quickly by yourself, the programming language C++ for the projects. Here is a good C++ tutorial.

Textbooks

  • Recommended: Database Management Systems (3rd edition), by Raghu Ramakrishnan and Johannes Gehrke (aka the "cow book").

  • Additional (optional): Database Systems: The Complete Book (2nd edition), by Hector Garcia-Molina, Jennifer Widom, and Jeffrey Ullman.

Grading

  • Project 1: 15%

  • Project 2: 25%

  • Quizzes: 10%

  • Midterm Exam: 15%

  • Final Exam: 35%

Cutoffs

These cutoffs on the total score are a minimum guarantee on the grade. The thresholds might be decreased later by the instructor but not increased.

Cutoff (>= x) Grade
96 A+
90 A
86 A-
82 B+
80 B
76 B-
72 C+
70 C
65 C-
55 D
< 55 F

Exam Dates

  • Midterm Exam: Wednesday, 5/1 in class from 12:00pm to 12:50pm

  • Final Exam: Wednesday, 6/12 in class from 11:30am to 2:29pm

Classroom Rules

  • No late days for submitting the programming projects.

  • Students are encouraged to ask questions and participate in the discussions. Please raise your hand before asking questions or speaking during the lectures.

  • If plagiarism is detected in the project code or the exams, University authorities will be notified for appropriate disciplinary action to be taken.

  • Harassment or intimidation of any form against any student will not be tolerated in class.