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 presumes strong programming abilities, and some familiarity with C. Working familiarity with at least one relational database management system is also highly advised.

Schedule and fees

This course is next scheduled to run Tuesdays and Fridays 6pm-9pm and Sundays 2pm-5pm for three weeks starting Tuesday, 7 February 2017. The total price is $1,800.

San Francisco, California
© 2016 Bradfield School of Computer Science