MPCS 53001 Databases (Autumn 2024)

Section 1
Instructor(s) Khaled, Ahmed (ahmedkhaled)
Location Crerar 011
Meeting Times Tuesday 5:30pm - 8:30pm
Fulfills Core Systems Elective

Syllabus

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

 

Coursework:

  • 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 (completed or concurrently enrolled)

Other Prerequisites

Not approved for CAPP students.

This course requires competency in Unix and Linux. New students must attend the MPCS Unix Bootcamp during orientation. Continuing students who previously attended the MPCS Unix Bootcamp have covered the required material. Continuing students who did not attend the MPCS Unix Bootcamp may review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Overlapping Classes

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

  • MPCS 51230-1 -- User Interface and User Experience Design
  • MPCS 51205-1 -- Topics in Software Engineering
  • MPCS 55001-2 -- Algorithms
  • MPCS 57200-1 -- Generative AI
  • MPCS 56511-1 -- Introduction to Computer Security

Eligible Programs

Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science Masters Program in Computer Science (new) Placement: Pass I Masters Program in Computer Science (new) Placement: Pass I + II Masters Program in Computer Science (new) Placement: Pass I + II (w/ Advanced)