CS 411: Database Systems
Course Description
As the first introductory course for databases, this course studies the fundamentals of using and implementing relational and non-relational database management systems. First, from the user perspective (i.e., how to use a database system), the course will discuss conceptual data modeling, physical data modeling, computing on data, designing schemas, querying databases, and manipulating databases. We will study both the relational and “NoSQL” databases such as document and graph databases. Further, from the system perspective (i.e., how to design and implement a database system), the course will study data representation, data accessing and indexing, query processing and optimization, and transaction processing.
Course Prerequisite
. Background: CS225 Data Structures.
. Programming: You should be comfortable in programming and can quickly learn a new language if needed. You should be able to use major programming languages such as Python and Java.
Course Goals
By the end of the course, you will be able to:
. Use a database system for storing, managing, and querying data.
. Design and create a data-driven application using a database system.
. Identify the differences between relational and non-relational (NoSQL) systems and their target usage and application settings.
. Describe the internal architecture and key components of a database system.
. Design and implement data indexing, query processing and optimization, and transaction processing algorithms.
Textbook
Database Systems: The Complete Book, 2nd edition, by Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer D. Widom.
Course Schedule
Week |
|
Topic |
Relevant Concepts and Techniques |
1 |
|
Introduction |
Course format, exams, projects, database introduction and overview.
|
2 |
|
Conceptual Data Modeling |
Data modeling, ER model, UML. |
3 |
|
Physical Data Modeling |
Relational model, translating from ER to relational model, object-oriented and object-relational models, NoSQL models--key-value model, document mode, graph model.
|
4 |
|
Computing on Data |
Relational algebra, map-reduce framework. |
5 |
|
Designing Schemas |
Schema redundancy and anomalies, functional dependencies, normal forms, Boyce-Cod Normal Form, Third Normal Form, lossless and dependency-preserving decomposition, multi-valued dependencies.
|
6 |
|
Querying Databases: The Relational Way |
SQL, basic select-from-where, null values, subqueries, set operations, dealing with duplicates, aggregates. |
7 |
|
Querying Databases: Non- relational Way |
Querying document databases, MongoDB querying, basic operations, handling complex structures, aggregate framework, the case for joins.
|
8 |
|
Querying Databases: Non- relational Way |
Querying graph databases, Neo4j querying, basic operations, advanced capabilities.
|
9 |
|
Manipulating Databases |
Creating and modifying databases, views, constraints, checks and assertions, triggers.
|
10 |
|
Spring Break |
|
11 |
|
Accessing and Indexing Data |
Accessing data, indexing data, index-sequential access method, tree-based indexing, binary tree, b+tree, quad tree, hash-based indexing, linear hashing, extensible hashing. |
12 |
|
Query Processing |
Database machine cost models, query operators, one-pass algorithms. |
13 |
|
Query Processing |
Two-pass algorithms, index-based algorithms. |
14 |
|
Query Optimization |
Algebraic laws, optimizer, rule- based optimization, cost-based optimization, dynamic programming, physical query plans, estimating sizes. |
15 |
|
Transaction Management |
Transactions, correctness of transactions, recovery, undo |
|
|
|
logging, redo logging, undo/redo logging. |
16 |
|
Conclusion |
Review and discussion of the state of industry and research. |
Elements of This Course
The course is comprised of the following elements:
. Lecture Video. Each topic will be covered through about 6 to 10 individual lecture videos that range from 5 to 20 minutes long each.
. Assignments. Assignments are given in the form of practice quiz. Each week has one practice quiz with 10 questions. Practice quizzes must be attempted and will be graded based on completion (you will receive full credit as long as you make a meaningful effort taking these quizzes). You will have unlimited attempts on practice quiz.
. Quizzes. Each week has one graded quiz with 10 questions. Graded quizzes contribute to the course overall grading.
. Programming Assignments. Four programming assignments are given in this class. Programming assignments will be autograded.
. Exams. Two proctored exams (via ProctorU) will be given in this class.
. Project. A semester-long project, with deliverables scheduled throughout the semester.
Assignment Deadlines
For all assignment deadlines, please refer to the Course Deadlines, Late Policy, and Academic Calendar page.
Grading Distribution and Scale
Grading Distribution
Your final grade will be calculated based on the activities listed in the table below. Your official final
course grade will be listed inEnterprise. The course grade you see displayed in Coursera may not match your official final course grade.
Component |
Percentage |
Assignment |
5% |
Graded Quizzes |
25% |
Programming Assignments |
20% |
Proctored Exams |
25% |
Project |
25% |
Total |
100% |
Grading Scale
Total |
Grade |
90 - 100 |
A (A-, A, A+) |
80 - 89 |
B (B-, B, B+) |
70 - 79 |
C (C-, C, C+) |
60 – 69 |
D (D-, D, D+) |
Below 60 |
F |