Data helps solve problems.
— Anne Wojcicki

Most software engineers use database systems, but few understand them. It is not surprising, then, that database related issues are a common cause of application failure, and that misuse of databases frequently impedes engineering team productivity.

Our course aims to provide practicing software engineers with a firm understanding of the architectures of database systems and the tradeoffs that they make. We hope this will help our students make better choices when deciding between database systems and their features, to better utilize their chosen technologies and to more effectively debug any issues.


  1. Introduction to Database Engines
  2. Sorting, Hashing and Single Table Queries
  3. Joins
  4. Indexes
  5. Relational Algebra and the Relational Model
  6. Query Optimization
  7. Transactions and Concurrency
  8. Distributed Databases (Dynamo, Cassandra etc)
  9. Large-scale Dataflow Engines (MapReduce/Hadoop, Spark etc)

Projects and exercises

This course involves a significant practical component: implementing a simplified relational database management system from scratch. Most classes will cover some amount of theory, which you will then directly apply to your own DBMS implementation. In addition, the optimization portion of the curriculum involves anticipating, reasoning about and optimizing query plans for a handful of given queries, in what is one of our most popular and illuminating exercise.

Assumed knowledge

This course assumes confident programming abilities, and some familiarity with computer architecture. Working familiarity with at least one relational database management system is also highly advised.

Schedule and price

This course will next run Wednesdays 5:30pm-8:00pm and Saturdays 10am-12:30pm from 7 February 2018 to 3rd March 2018. The total price is $1,800.

Apply now Still have questions? Contact us.
Prior to taking Databases, I’d never worked with a DBMS of any kind. Two-thirds of my way through the course, I was able to identify and fix a database transaction race condition in our backend’s API serializer code that even our senior backend engineers couldn’t figure out! I’m honestly blown away by the amount of expertise I acquired in such a short amount of time through this course.
Felix Tripier portrait
Felix Tripier, Software Engineer at Getaround
Bradfield’s databases course is the perfect mixture of theory and practical application. Understanding why the query planner is choosing certain algorithms and the implication of those choices is an invaluable skill. This course is mandatory for anyone who regularly works with databases.
James Vanneman portrait
James Vanneman, Software Engineer at Microsoft

[email protected]
576 Natoma St
San Francisco, California
© 2016 Bradfield School of Computer Science