- April 12: Exam II is on April 27th, from 8.30 AM to 11.30 AM @ Room 1031
- April 11: PS5 is out! (due April 21)
- April 07: Quiz 2
- March 29: PS4 is out (due April 10)
- March 17: P3 is out (due April 03)
- March 08: PS3 is out (due March 24)
- February 23: Exam I
- February 18: P2 is out (due March 15)
- February 11: Quiz 1
- February 02: P1 is out (due February 16)
- January 26: PS2 is out (due February 07)
- January 12: PS1 is out (due January 21)
- January 10: 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, 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 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, email@example.com, CMUQ 1006, 4454-8506, Office hours: Wednesday, 4:30PM-5:30PM.
Tamim Jabban, firstname.lastname@example.org, CMUQ 1004, 4454-8204, Office hours: Tuesday, 9:30 - 11:59 AM; Thursday, 10:30 - 11:59 AM.
Lectures: Sunday and Tuesday, 04:30 - 05:50 PM, Room 1031
Recitation: Thursday, Time: 4:30 - 5:20 PM, Room: 1031