MPCS 53001 Databases (Spring 2024)

Section 1
Instructor(s) Khaled, Ahmed (ahmedkhaled)
Location Crerar 011
Meeting Times Tuesday 5:30pm - 8:30pm
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:

  • An Introduction:
    • Essential definitions
    • Database properties
    • Data models
  • Entity-relationship (ER) model
  • Relational Model
  • Normalization and schema refinement
  • Relational Algebra:
    • Operators to build queries
    • Query processing and optimization
  • Structured Query Language (SQL):
    • Essential commands, constraints, and operators
    • Join operator, aggregate functions, and nested queries.
    • Interfacing Java/Python programming languages with SQL
  • Categories of data and properties of big data
  • SQL/NoSQL: Other types of databases
  • MongoDB: an example of document-based NoSQL databases
  • Neo4j: an example of graph-based NoSQL databases



  • Assignments [homeworks] (65%)
  • Midterm (10%)
  • Group-based final project [multi-parts]  (25%)
  • Class participation [bonus points] (5%)


Recommended (optional) Textbooks

  • Database Systems: A Practical Approach to Design, Implementation, and Management Author: Thomas Connelly and Carolyn Begg, 6th Edition, ISBN-13: 9780132943260
  • Database management Systems Author: Raghu Ramakrishnan and Johannes Gehrke. 3rd Edition.

Course Prerequisites

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.

Other Prerequisites

This course requires competency in Unix, Linux, and GitHub. 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:

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 56520-1 -- Advanced Security Topics
  • MPCS 55001-1 -- Algorithms
  • MPCS 55005-1 -- Advanced Algorithms
  • MPCS 51235-1 -- Advanced User Interface and User Experience Design

Eligible Programs

MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science