Class Information
Professor: Tia Newhall
Office: Science Center 249
Office hours: Wednesday 10-12, and by appointment
Class: TR: 9:55, Sci Cntr 199
Lab A: M: 1:15-2:45, Sci Cntr 256
Lab B: M: 3:00-4:30, Sci Cntr 256
Required Text:
Database Management Systems (Third Edition, 2002)
by Raghu Ramakrishnan and Johannes Gehrke.
Course Piazza Page for lab Q & A: CS44 piazza page
Course Overview, Goals, and Expectations:
Databases sit at the core of all modern commercial software/systems, managing the storage, update, and retrieval of large amounts of data in an efficient manner. This course provides an introduction to database management systems (DBMS); in particular, concentrating on the theory, design, and implementation of relational database management systems. Topics covered include data models (ER and relational model); data storage and access methods (files, indices); query languages including SQL and relational algebra; query evaluation; query optimization; transaction management; concurrency control; crash recovery; and advanced topics (parallel and distributed DBMS, security, others) Lab projects that involves implementing and testing components of a relational database management system is a large component of the course.
CS35 and CS31 are required prerequisites. CS44 qualifies as a
Group 2 Systems course for the CS major/minor requirements.
Course Learning Goals:
- understand the components of a database management system, and design choices
for managing system resources to support efficient and correct
DB storage, DB accesses, and data constraints
- understand the importance of abstraction in database systems
- learn how to represent data conceptually using entity-relationship models
- learn how relational databases maintain data integrity
- understand the importance of considering system, resources when designing
and choosing data structures
- learn how to utilize SQL and modern databases to represent
large, real-world datasets
- learn solutions for efficiency and scalability in database systems (query optimization, parallel and distributed databases)
Student Responsibilities
I have outlined the skills and objects this course promises to provide you.
For this promises to be upheld, you will need to commit towards the policies
outlined below. To succeed you should:
-
Attend class.
The primary introduction to course material is through class lecture.
Additionally, we often do learning exercises during class, which
give you immediate experience with the material we are covering.
While I am more than happy to help with any material in office hours, priority
will be given to students who attend and participate in lecture. Office hours
are not to make up for missed lecture.
- Attend lecture and lab prepared.
Lab will introduce new
content and be an opportunity to work in teams on paired assignments.
Lab attendance is mandatory.
- Participate actively in learning process.
Showing up is necessary, but not sufficient to success in the course.
To fully develop your analytical skills, you are expected to participate
in class discussion. This includes asking questions during lecture portions
and engaging your peers during short class exercises. Studies
show active involvement is the number one determinant of student success.
- Prepare for lecture
We will use clickers in this course combined with pre-reading assignments
for each lecture. You are expected to have done pre-reading before each
lecture, as well as reviewing your lecture notes from prior meetings. If you
do so, you will be prepared to answer clicker questions and
participate in group discussions.
See my Tips for Reading CS Textbooks
-
Start the lab assignments early.
I realize this one is not always easy to do, but if you can get in the
habit of doing this, you will be much better off. As the labs get
longer and more difficult, starting early will give you plenty of time
to mull over the lab problems even when you aren't actively writing
your solution.
Schedule
This is a tentative schedule. It will be updated as we go.
WEEK |
DATE |
ANNOUNCEMENTS |
TOPIC & READING |
LAB |
1 | Aug 30 | | Introduction to Databases & Data Storage
- Chapter 1
- Chapter 8-8.1, 9-9.3
Tips for Reading CS Textbooks | Monday Lab |
Sep 01 | | Lab 0: C++ Warm-up with Binary File I/O |
2 | Sep 06 | | Data Storage and Buffer Management & ER Model Intro
- Chapter 8-8.1, 9-9.4
- Chapter 9.4, 2-2.1
| Monday Lab |
Sep 08 | Drop/Add ends (Sep 09) | Lab 1: Implementing a Buffer Manager |
3 | Sep 13 | | ER Model
- Chapter 2-2.4.2
- Chapter 2-2.5, 2.8, 3-3.1
| Monday Lab |
Sep 15 | |
4 | Sep 20 | | Relational Model
- Chapter 3-3.4
- Chapter 3.5-3.8
| Monday Lab |
Sep 22 | | Lab 2: ER and Relational Model |
5 | Sep 27 | | File Organization & Indexing- Chapter 8.2-8.4, 9.5-9.8
- Chapter 10-10.2
| Monday Lab |
Sep 29 | | Lab 3: Heap Page |
6 | Oct 04 | | B+Tree Indexes
- Chapter 10-10.6
- Chapter 10, 11.1
| Monday Lab |
Oct 06 | | - |
| Oct 11 | Fall Break |
Oct 13 |
7 | Oct 18 | | Hash Indexes - Chapter 8.4.7, 10.6-10.9
- Chapter 8.3.1, 11-11.2
| Monday Lab |
Oct 20 | |
8 | Oct 24 | Midterm Monday 7:30-9:30pm, Sci Cntr 101 |
Oct 25 | | Relational Algebra
- Chapter 4-4.2
(no reading quiz Tues) - Chapter 4-4.2, 5-5.2.1
| Lab 4: Relational Algebra |
Oct 27 | |
9 | Nov 01 | | SQL - Chapter 5-5.3
- Chapter 5-5.5
| Monday Lab |
Nov 03 | Last day CR/NC or W (Nov 04) | Lab 5: Implementing a B+Tree Checkpoint 1 |
10 | Nov 08 | | SQL & External Sorting - Chapter 5-5.5, skim 5.6-5.7
- Chapter 13
| Monday Lab |
Nov 10 | | Lab 5: Checkpoint 2 |
11 | Nov 15 | | Query Evaluation
- 12-12.3, 14-14.3
- 14-14.4, 14.7
| Monday Lab |
Nov 17 | | Lab 5: Final Parts |
12 | Nov 22 | | Query Optimization, Parallelization
| . |
Nov 24 | Thanksgiving |
13 | Nov 29 | | Transactions and Distributed Databases
- Chapter 16-16.5
- skim: 22.6-22.8, 22.12, 22.14.1
| Monday Lab |
Dec 01 | | Lab 6 |
14 | Dec 06 | | Distributed and NoSQL Databases
| . |
Dec 08 | |
| Dec 13 | Final 9am-12pm, Sci Cntr 199 |