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.

Topics covered

  • The relational model and relational algebra
  • Architectures of traditional RDBMS’s
  • Query planning and optimization
  • Overview of column stores, in-memory databases and other recent trends in DBMS architectures
  • ACID, weak isolation and distributed databases key-value stores (Dynamo, Cassandra etc)
  • Data warehousing, large-scale dataflow and MapReduce


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 fees

This course is next scheduled to run Mondays and Thursdays 6pm-9pm and Sundays 10am-1pm for three weeks starting Monday, 1 May 2017. The total price is $1,800.

San Francisco, California
© 2016 Bradfield School of Computer Science