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 logging and recovery, concurrency control, and query optimization. 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 12:30 – 1:45 PM
- Location: Success Center 152
- Discussion platform: Ed
- Grading platform: Gradescope
- TAs: Ankith Chitti Reddy, Karthik Kundurthy, Shruti Kakubal, Sayan Sinha, Pramod Chundhuri
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 second part 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.
- Understand and implement logging and recovery methods to ensure data durability and fault tolerance.
- Learn concurrency control techniques to manage multi-user access and maintain data consistency.
- Explore query optimization strategies to improve query performance and resource efficiency.
In the first part of the series, we covered these topics:
- 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.
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% Programming Assignments
- 15% Exercise Sheets
- 15% Class Participation (Turning Point Quizzes)
- +10% Extra-credit Project
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.
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.