Chat with us on the course Piazza site if you have any questions!
CS 564 is designed to give students a solid background in database management systems, particularly relational database management systems (DBMSs). We will examine such systems from two perspectives: that of a DBMS user, and that of a DBMS implementor.
There will be 2 programming assignments that will explore database design and implementation and 2 SQL based assignments to investigate DBMS querying and optimization.
Course Prerequisites
CS 367 (or equivalent data structures course) is absolutely essential. CS 537 might be helpful.
Programming Tools
The in-class activities, homework, and projects will require the use of C++:
Recommended Textbook
Database management systems (3rd edition), by Raghu Ramakrishnan and Johannes Gehrke (also called the “cow book”).
Additional books that can be used
Database Systems: The Complete Book (2nd edition), by Hector Garcia-Molina, Jennifer Widom, and Jeffrey Ullman.
Assignments
Lecture Notes
# | Date | Topic | Lecture Materials | Assignments |
---|---|---|---|---|
1 | 9/4 | Course Logistics and DBMS Uses |
Cow book: Chapter 1 |
|
2 | 9/6 | Assignment #1 Introduction |
References: See C++ references above. |
Assignment #1: C++ Word Locator
|
3 | 9/9 | ER Diagrams and Database Design |
Cow book
|
|
4 | 9/11 | SQL I |
Cow book
|
|
5 | 9/16 | SQL II |
Cow book
|
|
6 | 9/18 | DBMS Buffer Management |
Cow book
|
|
7 | 9/20 | Assignment #2 Introduction |
References: See posted assignment slides. |
Assignment #2: SQL
|
8 | 9/23 | Tree-based Storage Structures |
Cow book
|
|
9 | 9/25 | Sorting Lecture |
References: Slides from Thanh Do |
|
10 | 9/30 | Query execution algorithms I |
References: Parts of Cow book chapters 12-14. Look at the Lecture Plan for topics to focus on in in these chapters. |
Assignment 2 due @ 11:59 pm |
11 | 10/2 | Query execution algorithms II |
References: Parts of Cow book chapters 12-14. Look at the Lecture Plan for topics to focus on in in these chapters. |
|
12 | 10/4 | Assignment #3 Introduction |
References:
|
Assignment #3: B+ Tree
|
13 | 10/7 | Database Metadata |
Cow book
|
|
14 | 10/9 | Query Optimization I |
Cow book
|
|
15 | 10/14 | Query Optimization II |
Cow book
|
|
16 | 10/16 | Query Optimization III |
Cow book
|
|
17 | 10/21 | Review Session 1 |
|
|
N/A | 10/25 | Midterm Exam Released |
References:
|
Midterm Exam
|
18 | 10/28 | Transaction Management I |
Cow book
|
References: Instant Recovery Paper |
19 | 10/30 | Transaction Management II |
See 10/28 resources |
|
20 | 11/4 | Concurrency Control I |
Cow book
|
|
21 | 11/6 | Concurrency Control II |
See 11/4 resources |
|
22 | 11/8 | Indexes and other DBMSs |
Cow book
|
|
23 | 11/13 | Columnar Storage and Compression |
Complete Book Prof. Rekatsinas' Fall 2017 Lecture Slides |
|
24 | 11/15 | Assignment 4 out + merge forests | Blog post overview of log-structured merge trees. |
Assignment #4: Query Optimization
|
25 | 11/18 | Scaling & parallel query execution |
Cow book
|
|
26 | 11/20 | Cloud services |
Online resources
|
|
27 | 11/22 | In-Class Practice Final |
In-Class Practice Final |
|
28 | 11/25 | In-memory databases |
Online resources
|
|
29 | 11/27 | Review Session | ||
30 | 12/2 | Data cleaning | ||
31 | 12/4 | Data analytics | ||
33 | 12/9 | In-class TA Review Session I |
Keep in mind that Prof. Rekatsinas' slides may contain material that won't appear on our exam. You can find the rest of his slides on his course website from 2017. |
|
34 | 12/11 | In-class TA Review Session II |
|
Goetz Graefe: Monday 3:45 pm - 4:45 pm, Wednesday 1:15 pm - 2:15 pm @ Noland 132 (our classroom)
Kyle Klassy: Monday 9:00 am - 10:00 am @ CS4243
Zhihan Guo: Friday 9:30 am - 10:30 am @ CS4241
Ruohui Wang: Tuesday 2:15 pm - 3:15 pm @ CS3393
Note: the schedule of office hours may change from time to time, in which case an announcement will be made on the course Piazza.
We encourage you to discuss the Programming Assignments with other students; it's fine to discuss overall strategy and collaborate with a partner or in a small group, as both giving and receiving advice will help you to learn.
However, you must write your own solutions to all of the problems, and you must cite all people you worked with.
It's not OK to share code or write code collaboratively. (This includes posting and/or sharing your code publicly, such as on GitHub!)
If you do not do so, we will consider this a violation of the University of Wisconsin Honor Code.
If you consult any resources outside of the materials provided in class, you must cite these sources. We reserve the right to assign a penalty if your answers are substantially derivative, but, as long as you provide appropriate citations, we will not consider this an Honor Code violation.