Advanced Database System Design

Fall 2026 / Gregory S. DeLozier, PhD / MW 5:30-6:45

Explore how applications preserve their state and use databases, beginning with SQLite and SQL, then moving through web applications, data access libraries, and MongoDB.

Course Calendar
Remaining Fall 2026 class meetings, starting October 5.

Chapters

Chapter 0: Why Use Databases?
External data, persistent application state, and the course outline.
Chapter 1: Working with SQL in SQLite
Creating, querying, and changing records with SQLite.
Chapter 2: SQL in Python
Connections, parameterized queries, returned rows, and commits.
Chapter 3: Introduction to Web Applications
Flask routes, templates, forms, and persistent application state.
Chapter 4: Database Abstraction
Abstraction layers, single responsibility, and database operations.
Chapter 5: Database Constraints
Owners, foreign keys, required values, and rules for related records.
Chapter 6: Object-Relational Mappers
Peewee models, database operations, and schema migration behind the application interface.
Chapter 7: ORM with Constraints
Peewee relationships, foreign keys, validation, and database-enforced rules.
Chapter 8: Dataset
Dictionary-based database access and exploration of an unfamiliar database.
Chapter 9: Optimization
SQLite query plans and indexes, followed by building and tuning an IMDb titles database.
Chapter 10: Alternative Platforms
Part One: a Hello World counter and the Pets application in Streamlit.
Chapter 11: Introduction to MongoDB
Documents, collections, queries, and persistent local storage with Mongita.

Repository

The course code is in the public GitHub repository at kentcs/advanced-database. You can fork it on GitHub, clone it with git clone https://github.com/kentcs/advanced-database.git, or open it in GitHub Codespaces.