InstructorsSubhadeep Sarkar, Han Yue, and Shubham Kaushik
Class TimingsTue & Thu 5:30 PM – 6:50 PM
Class LocationAbelson-Bass: 131

Course Description

We live in a data-driven world! In fact, every two days, we create as much data as we created from the dawn of humanity up to 2003. We generate an unprecedented amount of data every day through our daily activities in every facet of life, including business, governance, management, research, and scientific activities. Storing, managing, and accessing this large volume of data is an enormous challenge in the face of ever-changing application requirements and performance goals. Database systems are the backbone of any large-scale data management infrastructure. This class presents a comprehensive introduction to the fundamental concepts of database systems. We will start by discussing the classical approaches to database design and the fundamental building blocks and operating principles of database systems. The primary focus of the course will be on the core concepts of the internals of database systems, covering entity-relationship and relational data models, commercial relational query languages (SQL and relational algebra), file organization, storage and memory management, indexing and hashing, query optimization, query processing, transaction processing, concurrency control, and recovery. Finally, we will cover the new trends in data management in the era of big data and data management in the cloud to highlight the evolution of database systems over the years.

Prerequisites

COSI 21a and COSI 12b. A working knowledge of C/C++, Java, or Python programming and a fundamental understanding of data structures and algorithms is required.

Learning Goals

Students who successfully complete all components of this course will be able to demonstrate the following by the end of the semester.

  1. Familiarization with the history and evolution of database management systems design over the past decades.
  2. Understanding of the importance and challenges associated with large-scale data management and analysis.
  3. Knowledge about the key components of a relational database system and their working principle.
  4. Ability to interact with relational data stores using a working knowledge of SQL.
  5. Understanding of the fundamental performance tradeoffs in data structures and access methods design, and the importance of such design decisions on the overall performance of a relational data system.
  6. Understanding of the impact of the ever-changing workload and application requirements on the design of modern relational data systems.

Instructor

Subhadeep Sarkar

subhadeep@brandeis.edu

Office Hours

Volen 259 (Tu/Th 11:00 AM - 12:00 PM)

Teaching Assistants

Han Yue

hanyue@brandeis.edu

Office Hours

Volen 109 (Wed 2:00 PM - 4:00 PM)

Shubham Kaushik

kaushiks@brandeis.edu

Office Hours

Volen 110 (Mon/Fri 4:30 PM - 5:30 PM)