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
- Silberschatz, Korth, & Sudarshan: Database System Concepts. Seventh Edition. McGraw-Hill, 2019 [ISBN: 9780078022159].
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.