Databases sit at the core of all modern commercial software/systems, managing
the storage, update, and retrieval of large amounts of data in an efficient
manner. This course provides an introduction to database management systems
(DBMS); in particular, concentrating on the theory, design, and implementation
of relational database management systems. Topics covered include data models
(ER and relational model); data storage and access methods (files, indices);
query languages including SQL and relational algebra; query evaluation; query
optimization; transaction management; concurrency control; crash recovery; and
advanced topics (parallel and distributed DBMS, security, others) Lab projects
that involves implementing and testing components of a relational database
management system is a large component of the course.
Prerequisites: CPSC 35 and CPSC 31 required.
This course satisfies the Core Systems requirement (1.c.ii) of the new CS
major/minor requirements, and satisfies a Group 2: Systems requirement
for the old CS major/minor requirements. It can also be used to satisfy
an upper-level elective (1.d) of the CS major/minor requirements.
Course Learning Goals:
- Understand the components of a database management system (DBMS) and
understand design choices for managing system resources to support efficient
and correct DB storage, DB accesses, and data integrity and constraints
- Understand the design of a relational DBMS by implementing parts of one
- Understand the importance of abstraction in database systems
- Understand the importance of considering system resources when designing
and choosing data structures
- Learn how to represent data using
entity-relationship and relational models
- Learn how to utilize SQL and modern databases to represent large,
real-world datasets
- Learn solutions for efficiency and scalability in database systems (query
optimization, parallel and distributed databases)
- Learn how to use and modify a large layered DBMS code base
- Learn how to read and understand interface documentation of a large
layered system
- Learn how to debug and test complex systems code
Course Webpages:
Current or Most Recent offering:
Spring 2025
Some older offerings:
Fall 2020 (on-line semester, first use of SwatDB),
Fall'16,
Fall'07 (this predates the CS31 prereq)
Professor Soni
also teaches this course.