- April 17: Assignment 5 posted; due April 24
- April 2: Assignment 4 posted; due April 12
- March 19: Project 3 posted; due April 5
- February 26: Project 2 posted; due March 15
- February 20: Assignment 3 posted; due March 03
- February 04: Project 1 posted; due Feb 18
- January 28: Assignment 2 posted; due Feb 07
- January 15: Assignment 1 posted; due Jan 23
- January 13: First session of 15-415
Title: Database ApplicationsDescription:
World data is exploding and is now measured in Exabytes. This calls for scalable databases that can effectively store and manage such an influx of Big Data. This course presents an in-depth treatment of database management systems (DBMSs), with an emphasis on how to design, create, refine and efficiently use a relational database as well as build and optimize internals of DBMSs. As such, the course offers a combination of application-centric and systems-centric discussions on classical and modern DBMSs, with a focus on relational databases. Specifically, we will first discuss the Entity-Relationship and the Relational models. Second, we will cover relational algebra and calculus as a foundation for relational query languages. Third, we will study the commercial Structured Query Language (SQL) which allows creating, manipulating and querying relational databases. Fourth, we will show how users can connect to a DBMS and execute SQL queries from within high-level programming languages using JDBC and SQLJ. Consequently, students will have the chance to develop full-fledged applications using a three-tier architecture, which encompasses a front-end web-based or standalone GUI tier, a middle logic-processing tier and a DBMS back-end tier.
Afterwards, we will initiate the discussion on the internals of DBMSs. In particular, we will first study hash-based (e.g., extendible and linear) and tree-based (e.g., ISAM and B+ trees) indexing schemes, crucial for expediting query processing in relational databases. Other DBMS internals like disk space and buffer managers will be examined as well. Second, we will explain how relational operators and query plans can be implemented, evaluated and optimized. Third, we will delve into schema refinement and normal forms (e.g., BCNF and 3NF) to minimize redundancy and preclude update, insertion and deletion anomalies. Fourth, we will elaborate on transaction management which forms the underpinning for concurrent execution and failure recovery in DBMSs. Specifically, we will define transactions, cover its Atomic, Consistency, Isolation and Durability (or in short ACID) properties, and demonstrate how DBMSs can ensure such properties. Finally, we will conclude our discussion with other types of databases like NoSQL databases (e.g., the Google’s BigTable) and some advanced topics such as data warehousing for informed decision-making, data mining for useful information extraction, and distributed and parallel databases for Big Data and Big Graphs (e.g., graphs with billions of edges and vertices) storage and management.
To this end, we note that students will be given an intensive hands-on experience through four large programming projects. Particularly, students will develop multiple applications that interface with a DBMS (treating it as a “black box”), and write code that implements some internal modules of relational DBMSs (e.g., B+ tree).
Pre-requisites: Grades of “C” or better in 15-121 (i.e. Introduction to Data Structures) and 15-213 (i.e. Introduction to Computer Systems)
Prof. Mohammad Hammoud, firstname.lastname@example.org, CMUQ 1066, 4454-8506, Office hours: Wednesday, 4:30PM-5:30PM.
Dania Abed Rabbou, email@example.com, CMUQ 2062, 4454-8590, Office hours: Monday and Wednesday, 1:00PM-3:00PM.
Lectures: Monday and Wednesday, 03:00 - 04:20 PM, Room 2051
Recitation: Thursday, Time: 4:30 - 5:20 PM, Room: 2051