Database Systems

Course ID 15445

Description This course is on the design and implementation of database management systems. Topics include data models (relational, document, key/value), storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). Case studies on open-source and commercial database systems will be used to illustrate these techniques and trade-offs. The course is appropriate for students with strong systems programming skills.

Key Topics
data models (relational, document, key/value, storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed).

Course Relevance
This course is for students interested in the design and implementation of database management systems.

Course Goals
Use relational algebra and relational calculus, to express database queries.
Use SQL to interact with database management systems.
Design appropriate database tables, using functional dependencies and normal forms.
Implement a disk-oriented database storage manager with table heaps and indexes.
Understand, compare, and implement the major concurrency control algorithms.
Implement database recovery algorithms and verify their correctness.
Identify trade-offs among database systems techniques and contrast distributed/parallel alternatives for both on-line transaction processing and on-line analytical workloads.
Interpret and comparatively criticize database system architectures.

Pre-required Knowledge
Systems Programming, C/C++

Assessment Structure
15% Homeworks, 45% Programming Projects, 20% Midterm Exam, 20% Final Exam, +10% Extra Credit (Optional)

Extra Time Commitments
15-445 is for undergraduates. Graduate students should enroll in 15-645.

Course Link
http://15445.courses.cs.cmu.edu