In the age of “Big Data”, the problem of storing, managing and gaining insight from data is more pressing than ever. Additionally, the world of data management has exploded, with more products and services on offer than ever before. In this class, we will explore the problem of storing, managing and querying structured, semi-structured, and unstructured data by learning how database management systems work, how they may be used, and how the influx of a variety of new tools has positively and negatively transformed how we manage data. Students will learn the theoretical principles and history of relational databases, how to define and query data using SQL, how to measure and improve performance, and how to incorporate the use of a relational database into various types of software applications. From here, we will explore more recent developments in the database space, including “specialized” database types in the NoSQL realm, as well as cloud-hosted databases, such as those offered by Amazon and others. In addition to regular reading, assignments, and small projects, students will also carry out a final project involving a data management problem of their own design using the tools of their choice.
Students need not have prior programming experience, but will be exposed to programming and computer science principles relevant to data management and related applications.