Section | 1 |
---|---|
Instructor(s) | Almhana, Rafi (ralmhana) |
Location | RY 251 |
Meeting Times | Tuesday 5:30pm - 8:30pm |
Fulfills | Core Systems Elective |
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. 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
Create and design a database
Entity-Relationship diagram
Week 2:
Query
Filtering
Working with multiple tables
Week 3:
Grouping and aggregates
Subquery
Week 4:
Transactions
Indexes and Constraints
Views
CRUD operations
Week 5:
NoSQL
Redis
Web Storage
Week 6:
Document database
Week 7:
Week 8:
Triggers
Stored procedures
Week 9:
Elastic Search
Coursework
Weekly Homework (~20%)
Multi-part project (~50%)
Midterm (~30%)
Core Programming (completed or concurrently enrolled)
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 review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/
This class is scheduled at a time that conflicts with these other classes: