Skip to main content
CMU
Computer Science
12 credits

CMU 15-445: Database Systems

15-445 is CMU's database systems course: storage, buffer pools, indexes, query execution and optimization, concurrency control, and recovery, built around implementing real components inside the BusTub teaching database in C++. Its public lectures and projects have made it the internet's default database-internals curriculum.

Fennie is independent and not affiliated with Carnegie Mellon University. This is an unofficial study guide.

What makes it hard

The projects are serious C++ systems programming: each builds inside a real codebase where your component must satisfy interfaces you didn't design, and concurrency bugs in the later projects don't reproduce on demand. Self-learners arrive in waves from the famous lectures and discover the projects assume systems maturity the videos don't supply.

What you'll cover

  • Storage and buffer pool management
  • B+Tree indexes
  • Query execution and join algorithms
  • Query optimization
  • Concurrency control and transactions
  • Logging and crash recovery

The 15-445 study guide

How to study for CMU 15-445, step by step.

  1. 1

    Get C++-fluent before the first project, not during

    BusTub is modern C++ in a real codebase, and language friction during a project deadline is self-inflicted. If your C++ is approximate, spend the early weeks making it concrete.

  2. 2

    Read the project's surrounding code first

    Each project lives inside interfaces and invariants you didn't write. An hour reading the headers and tests before coding beats three hours of misled implementation.

  3. 3

    Trace each mechanism on paper before implementing

    B+Tree splits, buffer eviction, two-phase locking: work small examples by hand until the algorithm is yours, then code it. Implementing from a half-understood description is the slowest path through every project.

  4. 4

    Budget double for the concurrency projects

    When transactions and latching arrive, bugs stop reproducing reliably and progress turns nonlinear. Start those projects the day they open and test with sanitizers from the first commit.

  5. 5

    Self-learners: pair every lecture with its project work

    The lectures are famous for a reason, but database internals compile into understanding only through BusTub. Schedule project milestones with real dates. The abandoned-fork statistics are a warning, not trivia.

Today

Today's 15-445 plan

Preview
65 min

What a Fennie Daily Plan looks like for 15-445. Yours is built from your own syllabus and adapts every day to your deadlines and progress.

0 / 4 done~65m remaining
Keep this plan free

First plan free, no card required. Fennie is independent and unaffiliated with your school.

FAQ

Is 15-445 hard?

The projects are the difficulty: real C++ components inside a real codebase, with later projects adding concurrency bugs that resist reproduction. Conceptually it's well-taught and well-paced; students with solid systems footing who start projects early consistently succeed.

Can I take 15-445 online for free?

The lectures, notes, and BusTub projects are public, and the course has become the standard self-study path into database internals worldwide. No credit, full content. The projects, not the videos, are where the learning actually happens.

What should I know before 15-445?

Real C++ (not just C), data structures fluency, and systems basics at the 15-213 level. The buffer pool and recovery units assume you understand memory and caching natively. SQL familiarity helps but the course is about what's underneath SQL.

More CMU courses