Homepage

Course Info

This course offers a hands-on dive into designing and implementing relational database management systems. Students will uncover the intricacies of database system architecture — focusing on storage management, indexing, and query execution. By building a fully functional database using C++, students will tackle real-world challenges through engaging programming assignments, gaining practical experience along the way.

  • Instructor: Joy Arulraj
  • Time: Tue/Thu 2:00 – 3:15 PM
  • Location: Boggs B5
  • Discussion platform: Ed
  • Grading platform: Gradescope
  • TAs: Lohith Siddalingappa , Hersh Dhillon, Sayan Sinha, Pramod Chundhuri, Gaurav Kakkar, Jiashen Cao

Syllabus

Prerequisites

To be successful in this class, students should meet the following prerequisites:

  • Foundational Computer Systems Courses: Completion of courses such as Data Structures and Algorithms (CS 1332) and Computer Systems and Networks (CS 2200) is required. Familiarity with operating systems (CS 3210) and introductory database systems (CS 4400) is recommended.
  • Proficiency in C++: Comfort with C++ programming is essential, as all assignments are based on this language. You should either be proficient in C++ or be prepared to learn it quickly.
  • Systems Programming Experience: A solid background in systems programming and software engineering fundamentals is necessary to manage the complexities of database system implementation.
  • Complex Problem-Solving Skills: The course involves deep analytical work and requires strong problem-solving and algorithmic thinking abilities.
  • Willingness to Learn: An openness to new technologies and advanced database concepts is crucial, as the course covers cutting-edge techniques in database systems.

Educational Objectives

This is the first of a two-part series on designing and implementing database management systems, with a strong focus on hands-on programming. By the end of this course, you will:

  • Master the internal mechanics of relational database systems.
  • Apply advanced storage management techniques, including slotted pages and memory management.
  • Implement key indexing data structures like B+ trees and hash tables.
  • Develop techniques for parsing and executing complex SQL queries.

Throughout this course, we will explore:

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

In the second part of the series ((offered in Spring - CS 8803), we will cover:

  • Logging and Recovery Methods
  • Concurrency Control
  • Query Optimization

Grading Scheme

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

  • 50% Exams (Mid-Term Exam: 20%, Final Exam: 30%)
  • 20% BuzzDB Programming Assignments
  • 15% Exercise Sheets
  • 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 designed to complement the lecture topics, using BuzzDB, an end-to-end toy relational database management system created specifically for this course. Through these assignments, you will explore and apply concepts covered in lectures in a practical, hands-on way.

Exercise Sheets

The exercise sheets feature questions related to the lecture topics and closely resemble the questions you will encounter in the exams.

Exams

There will be two in-person exams, as outlined in the schedule. Each exam will feature subjective questions based on the topics covered in class.

Textbook

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.

Credits

This website is based on a design by Andy Pavlo.