Homepage

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: Mon/Wed 3:30 – 4:45 PM
  • Location: Instructional Center 105
  • Discussion platform: Piazza
  • Grading platform: Gradescope
  • TAs: Pramod Chunduri, Jiashen Cao

Syllabus

Format

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

Prerequisites

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 will cover the following topics in the first part of the series:

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

We are planning to 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:

  • 35% Programming Assignments
  • 15% Exercise Sheets
  • 20% Mid-term Exam
  • 30% Project (Proposal: 5%, Project Checkpoint: 5%, Final Presentation: 20%)

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 for this course. This system has been developed for educational purposes and should not be used in production.

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.

Exams

There will be one remote exam as specified in the schedule.

The exam will consist of subjective questions based on the topics discussed in class. It will be open notes.

Textbook

Credits

This website is based on a design by Andy Pavlo.