This is a graduate-level course on the internals of database management systems. This course has a heavy emphasis on programming projects. There are also readings assigned for each class and a final exam. Upon successful completion of this course, the student should be able to:
- Apply and customize state-of-the-art implementation techniques for single-node database management systems following modern coding practices.
- Identify trade-offs among database systems techniques and contrast alternatives for both on-line transaction processing and on-line analytical workloads.
- Develop and justify design decisions in the context of a high-performance database system.
- Implement and evaluate complex, scalable database systems, with emphasis on providing experimental evidence for design decisions.
- Interpret and comparatively criticize state-of-the-art research talks and papers, with emphasis on constructive improvements.
The final grade for the course will be based on the following weights:
Reading Assignments & Reviews
For each class, there is set of assigned readings. Each student is required to turn in a one paragraph synopsis of the mandatory paper (denoted by the symbol on the course schedule). Students are encouraged to peruse the supplemental readings to enhance their knowledge about a particular, but this not required and these papers will not be covered in the final exam. Students are allowed to miss reading review submissions for three classes during the semester. Late submissions will not be accepted without prior approval from the instructor. You are must also submit a synopsis even for the class that you are the assigned notetaker.
Each review must include the following information:
- Overview of the main idea presented in the paper (3 sentences).
- Key findings/takeaways from the paper (2-3 sentences).
- Brief description of the system evaluated in the paper and how it was modified / extended (1 sentence).
- Workloads / benchmarks used in the paper's evaluation (1 sentence).
Students will submit their synopsis using this Google Form before class begins. Late submissions will not be accepted.
Each student will be assigned as the notetaker for one lecture during the semester. The idea is to compress the slides down into sentences that discuss the main points from the class. All the notes are written in latex.
The notes for each class are due seven days after the lecture date. You will submit the notes as a PR on Github. You are allowed to use assistive technologies (i.e., ChatGPT) for this assignment but you are ultimately responsible for the content.
More information is available on the notes page.
The main component of this course will be the group programming project. Students will organize into groups and to implement a part of a larger database system. The projects are designed to be (1) relevant to the materials discussed in class and (2) require a significant programming effort from all team members. The projects will vary in both scope and topic, but they must satisfy this criteria.
There will be multiple milestone deadlines throughout the semester to ensure that students are making progress on their projects.
More information is available on the project page.
The final exam will be a take-home assignment that will be given out on April 24 at the end of the semester. The exam will be long-from questions based on the mandatory readings and topics discussed in during the entire semester. Students will turn in their exam in paper during the final project presentations (to be announced). It's going to be raw, son.