- April 12: PS5 is out! (due April 19)
- April 01: Quiz 2 will be held in class on April 8th.
- April 01: PS4 is out (due April 11).
- March 22: P3 is out (due April 15).
- March 11: PS3 is out (due March 20).
- February 19: P2 is out (due March 22).
- January 28: P1 is out (due February 15).
- January 23: PS2 is out (due February 04).
- January 09: PS1 is out (due January 21).
- January 07: First session of 15-415
Title: Database ApplicationsDescription:
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 Django. 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, which are 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 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 Cassandra.
To this end, we note that students will be given an intensive hands-on experience through three 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 1006, 4454-8506, Office hours: Wednesday, 10:30AM-12:00PM.
Tamim Jabban, email@example.com, CMUQ 1004, 4454-8496, Office hours: Monday, 10:30AM-12:00PM
Lectures: Sunday and Tuesday, 01:30 - 02:50 PM, Room 2147
Recitation: Wednesday, Time: 4:30 - 5:20 PM, Room: 2147