Syllabus
Educational Objectives
This is an upper-level course on the internals of query optimizers in 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:
- Design and implement a database query optimizer.
- Understand how queries are processed and identify why queries execute fast or slow.
- Understand, compare, and implement the query optimization transformation rules.
- Identify trade-offs among query optimization techniques and contrast alternative approaches for transaction processing and analytical workloads.
- Develop and justify design decisions in the context of a database management system's query optimizer.
- Interpret and comparatively criticize state-of-the-art database research talks and papers, with emphasis on constructive improvements.
Grading Scheme
The final grade for the course will be based on the following weights:
- 15% — Reading Assignments & Reviews
- 10% — Lecture Notes
- 20% — Project #1
- 40% — Project #2
- 15% — Final Exam
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 one class during the semester. Students do not have to submit reading reviews for book chapters. Late submissions will not be accepted without prior approval from the instructor. You 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 (three sentences).
- Three strengths of method (one sentence each).
- Three weaknesses of method (one sentence each).
- Workloads evaluated (one sentence).
Students will submit their synopsis using this Google Form before class begins. Late submissions will not be accepted.
Lecture Notes
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.
Project #1 — Query Optimizer Evaluation
This is a single-person project that will be completed individually (i.e., no groups). Students will be provided with instructions and sample data sets to evaluate their implementation. Grading will be based on both correctness and performance.
- Release Date: Jan 22, 2025
- Due Date: Feb 28, 2025
Project #2 — Group Project
The main component of this course will be the group programming project. Students will organize into groups and to implement a large system / prototype. 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.
- Release Date: Feb 17, 2025
- Due Date: May 01, 2025
Final Exam
The final exam will be an in-class long-question written exam that will be given on April 23 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.