This course is on the design and implementation of database management systems. Topics include data models (relational, document, key/value), storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). Case studies on open-source and commercial database systems will be used to illustrate these techniques and trade-offs. The course is appropriate for students with strong systems programming skills.

15-445 Students: Since this is a new course, it currently does not satisfy the systems requirements for SCS's undergraduate degree. We will get department approval at the end of the semester so that it will count.

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 and relational calculus, 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 major 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 architectres.

All programming projects will be completed in the SQLite database management system.

Wait List

Students will be enrolled in the course from wait list in the order that they become "eligible". A student is deemed eligible when the complete the complete the first homework with a perfect score. The instructor will add students will in a rolling basis until the course reaches capacity.

Update 2017-09-03: The course roster is full. We will not be taking any additional students from the waitlist.

Grading Scheme

The final grade for the course will be based on the following weights:


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 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.


There will be two exams during the course. 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. The exams will be based on the mandatory readings and topics discussed in class.

Late Policy

Each person has an automatic extension of four calendar days for any assignment in the course. You can use the extension on any homework or programming project. For instance, you can hand in one homework four days late, or each of four homeworks 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.
  • When you hand in a late assignment, you must identify (1) how late this assignment is and (2) how many total slip days you have left.
  • After you have used up your slip time, any assignment handed in late will be marked off 25% per day. That is, after 4 days, the grade will be zero.
In extreme circumstances (e.g., medical emergencies), we will grant no-penalty extensions. Please be prepared to provide written documentation (e.g., doctor's note).

Plagiarism Policy

  • All homeworks and projects are to be done individually. Whatever you turn in must be your own work.
  • Students are allowed to discuss about homework and project problems with others.
  • Students are not allowed to copy the contents of a white-board after a group meeting with other students.
  • Students are not allowed to copy the solutions from another colleague.
  • We will run all project submissions through a plagiarism checker to identify similar solutions.