Reading Material
- The following text books will be helpful for following the course and studying the presented material. All four textbooks have their merits, but any one should be sufficient as reading material.
- Elmasri and Navathe , Fundamentals of Database Systems, 6th Edition , Addison-Wesley , 2003
- Ramakrishnan and Gehrke , Database Management Systems, 3nd Edition , McGraw-Hill , 2002
- Silberschatz, Korth, and Sudarshan , Database System Concepts, 6th Edition , McGraw Hill , 2010
- Garcia-Molina, Ullman, and Widom, Database Systems: The Complete Book, 2nd Edition, Prentice Hall, 2008
- The slides for the course will be made available on the course schedule page
- For the brave, I will link research papers related to the topics covered in the course: resources
Grading Policies
- Programming Assignments: 50% (10% + 10% + 15% + 15%)
- Mid Term Exam: 20%
- Final Exam: 20%
- Quizzes: 10%
Detailed Course Topics
- Introduction
- Relational Algebra
- DBMS Architecture
- Hardware Characteristics affecting DBMS Design
- Read/Write Properties of Disks
- RAID Storage
- Memory Hierarchy
- Disk Storage and Buffer Management
- Physical Tuple Layout
- Page Layout
- Tuple IDs
- Buffer Replacement Strategies
- Indexing and Hashing
- B-Tree-Family Indices
- Hashing
- Query Optimization
- Logical Optimization
- Equivalence Transformations
- Physical Optimization
- Join Reordering
- Cost Estimation
- Query Execution
- Pipelining
- Push vs. Pull based Execution
- Access Methods
- Join Methods
- Grouping and Aggregation
- Other Operator Implementations
- External Sorting
- Recovery
- Write Ahead Log (WAL)
- Algorithms for Recovery and Isolation Exploiting Semantics (ARIES)
- Concurrency Control
- Serializability
- Two-Phased Locking (2PL)
- Implementing of Locks
- Advanced Topics
- Distributed Database Systems
- Datawarehousing
- Parallel Query Execution
- Technics for Executing Nested Queries and Un-nesting
- Additional Index Structures
- Relation to Large-Scale Data Analytics
Course Objectives
After attending the course students should be able to:
- Understand the design decisions behind textbook DBMS architectures
- Know the trade-offs of various storage organization techniques
- Be able to build parts of a small-sized data processing system from scratch
- Understand the basics of query optimization
- Know standard implementations of relational operators such as join, aggregation, and set operations
- Be able to estimate the cost of executing an operator/query based on DB statistics
- Know standard database indexing techniques
- Understand concurrency control and recovery mechanisms