Course Info

This course is a combination of lectures and programming assignments in which we will study the internals of modern database management systems. It will cover the core concepts and fundamentals of the components that are used in both high-performance transaction processing systems (OLTP) and large-scale analytical systems (OLAP). The class will stress both efficiency and correctness of the implementation of these ideas. The course is appropriate for advanced undergraduate and graduate students interested in systems programming.

  • Instructor: Joy Arulraj
  • Time: Tue/Thu 2:00 – 3:15 PM
  • Location: Howey Physics L1
  • Discussion platform: Piazza
  • Grading platform: Gradescope
  • TAs: Ishwarya Sivakumar, Shashank Suman, Kaushik Ravichandran, Aryan Rajoria, Chitti Ankith Reddy, Sayan Sinha



The course is a combination of lectures and programming assignments in which we will study the internals of modern database management systems.


Students are expected to have completed three undergraduate-level computer systems courses:

  • Data structures and Algorithms (CS 1332) (strict)
  • Computer Systems and Networks (CS 2200) (strict)
  • Design Operating Systems (CS 3210) (recommended)
  • Introduction to Database Systems (CS 4400) (recommended)

and to be comfortable with programming in C or C++.

Academic Honesty

All students should adhere to the Georgia Tech Honor Code. University Policies will be followed strictly in this course. Please, pay particular attention to academic misconduct.

Educational Objectives

This is the first part of a two-part series of courses on the design and implementation of database management systems. This course has a heavy emphasis on programming assignments. Upon successful completion of this course, the student should be able to:

  • Understand and apply state-of-the-art implementation techniques for 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 components of database systems, with emphasis on providing experimental evidence for design decisions.

We cover the following topics in the first part of the series:

  • Introduction to Relational Databases
  • Storage Management
  • Access Paths
  • Query Execution

We cover the following topics in the second part of the series (offered in Spring - CS 8803):

  • Query Optimization
  • Concurrency Control
  • Logging and Recovery Methods

Grading Scheme

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

  • 40% Exams (Mid-term: 20%, Final exam: 20%)
  • 25% EvaDB Programming Assignments (Project 1: 10%, Project 2: 15%)
  • 20% BuzzDB Programming Assignments
  • 15% Class Participation

Students enrolled in the 4420 section may skip attending the advanced lectures (marked with a star) in the schedule. They will not be expected to answer questions related to these advanced lectures in the exercise sheets or the exam.

Programming Assignments

The programming assignments are geared towards exploring the topics covered in the lectures. We will be using an end-to-end toy relational database management system, called BuzzDB, that is designed specifically for this course.

Exercise Sheets

The exercise sheets consist of a set of subjective problems on the topics covered in the lectures. They are representative of the questions that will appear in the exams.


There will be two in-person exams as specified in the schedule.

The exam will consist of subjective questions based on the topics discussed in class.



This website is based on a design by Andy Pavlo.