Learn to develop increasingly sophisticated databases from scratch

Together, we'll develop a series of databases and explore topics including:

Initially, we'll develop our projects in Java due to its ergonomics and performance. Overtime, we'll explore the tradeoffs for using different languages including C++, Python, and Rust.

Why develop databases?

Two reasons primarily:

  1. All software engineers use databases and developing prototype databases improves our intuition about how they work.
  2. In implementing databases, we’ll get to explore a range of different programming and software engineering topics and become generally stronger software engineers.

Work in progress …

This site is very much a work in progress and new projects will be added over time. I’d greatly appreciate your feedback on how this work could be improved and ideas for new projects. You can contact me at matthew.hagy@gmail.com.