| Section | 1 |
|---|---|
| Instructor(s) | Khaled, Ahmed (ahmedkhaled) |
| Location | None |
| Meeting Times | |
| Fulfills | Core Systems Elective |
Course Description:
This course starts by introducing the fundamental concepts associated with the design and the work of database systems, including 1) the main steps to design a database, the essential properties for the work of a database, a discussion on data storage, and the different data models utilized in such steps; 2) the Entity-Relationship (ER) model for an initial design to relational databases and the relational model to describe such design with structures; 3) the normalization forms for an optimized design; 4) the relational algebra to design, build, and optimize queries to the database; and 5) the different categories of data and an overview on the other database designs and paradigms with a comparison between SQL and NoSQL databases.
The course then focuses on three main types of databases: 1) SQL-based, where we learn about relational databases (using MySQL RDBMS), and the Structured Query Language (SQL) to build relational databases and to store, manipulate, and retrieve data; 2) NoSQL-based, where we learn about document-based databases (using MongoDB) and the MongoDB Query Language (MQL); and 3) NoSQL-based, where we learn about graph-based databases (using Neo4j) and the graph query language (Neo4j's Cypher).
The students, in the final project, will design and implement a database for a system/scenario of their choice, then develop a user interface (e.g., web-based) using a programming language (e.g., Java, Python) of their choice that connects and interacts with the created database to execute user interactions through database supported queries.
Course Contents:
Coursework:
Recommended (optional) Textbooks
Core Programming
This course can not be taken if you are taking or have already completed MPCS 53020 Foundations of Database Systems. There is significant overlap between the two courses.
This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.
Course request information for non-MPCS students: https://masters.cs.uchicago.edu/student-resources/non-mpcs-student-course-requests/
This class is scheduled at a time that does not conflict with any other classes this quarter.