This course studies the management of large bodies of information. This includes schemes for the representation, manipulation, and storage of complex information structures as well as algorithms for processing these structures efficiently and for retrieving the information they contain. The course does include programming in Python. The course topics include Relational Databases and SQL, as well as NOSQL (Not Only SQL) data stores.


This course is based upon the course designed by Prof. Amit Chakrabarti. Other guidance came from Prof. Jennifer Widom’s DB courses at Stanford, now available through, and Will Cross and Norberto Leite of the MongoDB team. In addition, invaluable assistance from graduate students Ray Jenkins and Lixing Lian has greatly improved the course. This instructor is deeply indebted to these outstanding educators.