Syllabus
You want to know whether this is the premier course at Carnegie Mellon University on the design and implementation of database management systems? Well, it is. This course rips through data models (relational, document, key/value), storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexes + filters (order preserving trees, hash tables, vector indexes), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). We will also use case studies on open-source and commercial database systems to illustrate these techniques and trade-offs. You should straight know that this course is appropriate for students that are ready to commit to a database-centric lifestyle and flex their systems programming skills.
- Meeting Time: Mon/Wed 2:00pm-3:20pm ET
- Lecture Location: Posner Hall A35
- Pre-requisites: CMU 15-213/513
- Textbook: DB System Concepts (7th Ed.)
This course satisfies the Software Systems Elective requirements for CMU's Computer Science Bachelors Curriculum.
Educational Objectives
This is an upper-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, homeworks, and two exams. Upon successful completion of this course, the student should be able to:
- Use relational algebra to express database queries.
- Use SQL to interact with database management systems.
- Design appropriate database tables, using functional dependencies and normal forms.
- Implement a disk-oriented database storage manager with table heaps and indexes.
- Understand, compare, and implement the fundamental concurrency control algorithms.
- Implement database recovery algorithms and verify their correctness.
- Identify trade-offs among database systems techniques and contrast distributed/parallel alternatives for both on-line transaction processing and on-line analytical workloads.
- Interpret and comparatively criticize database system architectures.
All programming projects will be completed in the BusTub database management system.
Wait List
Our capacity in the course is limited to the number of TAs that we have and the room size. We will move students off of the wait list as new seats become available. Preferential consideration is given to SCS students. Please do not contact the instructors or the TAs about whether you have a chance of enrolling into the course. You will be contacted if you are enrolled in the class.
If you are enrolled in the course but want to drop, you are not allowed to swap your position with another student on the waitlist. The admins will enroll students according to their protocol in a rolling basis until the course reaches capacity.
If you are enrolled in the course after the semester has started and assignments are due, it is your responsbility to contact the instructor and let them know how quickly you will turn in those projects.
Office Hours
Instructors and TAs will hold office hours on weekdays (Mon-Fri) at different times of the day. Please contact the instructor if you are not able to attend regularly scheduled office hours due to unforeseen circumstances. Students are encouraged to check Piazza and ask questions there instead of waiting for office hours. There will not be any office hours on Sundays to encourage students to start working on projects before the deadlines.
We will also hold an on-campus TA power session on the Saturday before each project is due.
We will hold an online recitation for each project after it is released. This recitation will be held online and the recording will be made available afterwards on Piazza.
Please do not email individual TAs with questions about projects or homeworks. Students should post all technical questions to Piazza.
Grading Scheme
The final grade for the course will be based approximately on the following weights:
- 15% — Homeworks
- 45% — Programming Projects
- 20% — Midterm Exam
- 20% — Final Exam
Homeworks
Students will complete multiple homework assignments during the course. These homeworks are designed to reinforce the lectures and reading materials. The homework due dates are the ones that are posted on this website.
Each homework will be graded out of a total of 100 points and are counted equally when computing the homework portion of the final grade.
Programming Projects
Students will complete programming projects during the course. Each assignment is cumulative. That is, you need to successfully complete each assignment in order to complete the next one. We will not release solutions or grading tests for the programming projects.
Each project will be graded out of a total of 100 points and are counted equally when computing the project portion of the final grade.
The course instructors and TAs will not teach students how to write/debug C++17 programs during the semester. It is a prerequisite for this course.
All students are required to complete Project #0 with a full score by September 7, 2025. Any student that is not able to complete this project before the deadline will be asked to drop the course and will automatically fail all subsequent assignments if they remain enrolled. Late days are not allowed for this first project. Students enrolled after the project deadline will be given only one day (24 hours) to complete the assignment starting at the date they are notified that they are enrolled in the course.
Exams
There will be two exams during the course. These exams will cover the mandatory readings and topics discussed in class. The first will be an "in-class" midterm exam. The second will be a final exam at during the University's final examination period at the end of the semester.
Late Policy
Each person has an automatic extension of four calendar days for programming projects only. For instance, you can hand in one project four days late, or each of four projects one day late.
- Late days are rounded up to the nearest integer. For example, a submission that is 4 hours late will count as one day late.
- You will lose 10% of the points for a project for every 24 hours it is late.
Late homeworks will not be accepted.
In extreme circumstances (e.g., medical emergencies), we will grant no-penalty extensions. Please provide written documentation (e.g., doctor's note).
Collaboration Policy
We expect that your work on homeworks, projects, and exams will be your own. You may not copy any part of a solution that was written by another student, or develop your project or homework solutions together with another student, or copy solutions from any unauthorized source such as the Internet. You may not look at another student's solution without permission from the course staff, even if you have completed your own, nor may you knowingly give your solution to another student or leave your solution where another student can see it.
Here are some examples of behavior that are inappropriate:
- Copying (or retyping) homework, project, or exam solutions from another person or source, either in draft or final form, even if permissions are incorrectly set to allow it. This behavior is still clearly inappropriate even if you make modifications from the original source.
- Searching for or viewing a current or past student's homework, project, or exam solution.
- Allowing someone else to view or copy your code, written assignment, quiz, or exam, either in draft or final form.
- Getting help that you do not fully understand or from someone whom you do not acknowledge on your solution.
- Coaching others step-by-step without them understanding your help.
- Writing, using, or submitting a program that attempts to alter or erase grading information or otherwise compromise security of course resources.
- Lying to course staff.
- Making your work publicly available in a way that other students (current or future) can access your solutions, even if others’ access is accidental or incidental to your goals.
If your work contains any statement or code that was not written by you, you must clearly identify the derived work and cite the source. If you are paraphrasing an idea you read elsewhere, you must acknowledge the source. Using existing material without proper citation is plagiarism, a form of cheating. If there is any question about whether the material is permitted, you must get permission in advance.
It is not considered cheating to clarify vague points in the assignments, lectures, lecture notes, or to give help or receive help in using the computer systems, compilers, or other facilities. You may discuss high-level concepts (including high-level discussions of algorithms) with other students, but you may not take notes from those conversations or develop your own solutions in sight of others’ diagrams or notes. Any violation of this policy is cheating. The minimum penalty for cheating (including plagiarism) will be a zero grade for the whole assignment; a typical penalty will be -100% on the assignment. Dishonesty while discussing an academic integrity issue (i.e. lying to course staff) usually results in an 'R' in the course. All violations of this collaboration policy will be referred to the appropriate University disciplinary board, with possible additional disciplinary action. For more information, see the University Policy on Academic Integrity.
If you believe you have violated this collaboration policy, you may retroactively retract your homework, project, or exam solution. If you retract your solution before we otherwise are aware of your conduct, you will receive a zero grade on the retracted work, but we will not consider your conduct to be an academic integrity violation.
There is no statute of limitations for violations of the collaboration policy; penalties may be assessed (and referred to the university disciplinary board) after you have completed the course, and some requirements of the collaboration policy (such as restrictions on you posting your solutions) extend beyond your completion of the course.
If you have any question about how this policy applies in a particular situation, ask the instructors or TAs for clarification.