MPCS 53001 Databases (Winter 2022)

Section 1
Instructor(s) Shang, Zechao (zcshang)
Location Ryerson 251
Meeting Times Thursday 5:30pm - 8:30pm
Fulfills Core Systems Elective

Syllabus

Course Description

In this course students will learn database design and development and will build a simple but complete web application powered by a relational database. 

We start by gathering requirements and showing how to model a relational database using an Entity-Relationship Diagram (ERD). Concepts covered include entity sets and relationships, using keys as a unique identifier for each object in an entity set, one-one, many-one, and many-many relationships as well as translational rules from conceptual modeling (ERD) to relational table definitions. We will examine the relational model and functional dependencies along with their application to the methods for improving database design: normal forms and normalization.

After designing and modeling their database, students will learn the universal language of relational databases: SQL (Structured Query Language). We will first introduce relational algebra, the theoretical foundation of SQL and then examine in detail the two main aspects of SQL: data definition language (DDL) and data manipulation language (DML). Concepts covered include subqueries, aggregation, various types of joins, functions, triggers and stored procedures. Students will then learn about web connectivity, as they build a simple front-end for their application in order to interact with their database online. Finally, we will provide an overview of related topics such as data warehousing, big data, NoSQL and NewSQL databases.

Students will gain significant experience with writing and reading SQL queries and understanding the design and function of relational databases throughout the course in the detailed in-class discussions, online homework, midterm and the real-world individual project.

Course Contents

    Requirements gathering

    Entity-Relationship model and design

    Database design

    Relational model

    Functional dependencies

    Normal forms and normalization

    Relational algebra

    SQL: Schema definition, Simple queries

    Subqueries, Aggregation, Modifications

    Joins, Views, Indexing, Constraints  

    Transactions, ACID properties

    Authorization

    Triggers

    Functions/Stored procedures

    Database connectivity

    Basic web programming

    Data warehousing overview

    Big data/NoSQL overview


Coursework

    Homework (weekly) (20%)

    Multi-part project (weekly)  (50%)

    Midterm (30%)

 

Recommended Textbooks
Database Systems Concepts (7th Edition) by Silbershatz, Korth, and Sudarshan

https://www.amazon.com/Database-Concepts-Abraham-Silberschatz-Professor-dp-0078022150/dp/0078022150

Course Prerequisites

Core Programming (completed or concurrently enrolled).

Other Prerequisites

Familiarity with Python programming recommended. Assignments will require a basic level of Python programming. If you do not have a background in Python, you should plan to take either 51042 Python Programming or 51046 Intermediate Python Programming as your core programming class or be prepared to learn Python on your own.

Not approved for CAPP students.

This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp (https://masters.cs.uchicago.edu/page/mpcs-unix-bootcamp) or take the online MPCS Unix Bootcamp Course on Canvas.

Overlapping Classes

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

  • MPCS 50101-1 -- Concepts of Programming
  • MPCS 51044-1 -- C++ for Advanced Programmers
  • MPCS 51200-1 -- Introduction to Software Engineering
  • MPCS 51083-1 -- Cloud Computing

Eligible Programs

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