ECS 165B Spring 2011 - Database System Implementation

Prof. Todd J. Green
green at cs dot ucdavis dot edu
Office Hours: Tuesdays 1:00pm-3:00pm, 3055 Kemper Hall
Teaching Assistant:
Armen Khodaverdian
aekhodaverdian at ucdavis dot edu
Office Hours: Thursdays 12-1pm and Fridays 10-11am, 055 Kemper Hall

Meeting times

Class mailing list


Database Systems: The Complete Book (2nd Edition) by Garcia-Molina, Ullman, and Widom, Pearson Prentice-Hall, 2009. A copy will be placed on reserve in Shields Library, available for 24 hour checkout.

Course Overview

This course is the continuation of ECS 165A, focusing heavily on implementation. The centerpiece of the course is the
DavisDB project, in which students will work in teams of 1 or 2 to build major components of a single-user relational database system in C++. Course lectures will mainly focus on database systems from an implementation perspective, but will also touch on a number of further topics in database systems and theory. There is no midterm or final exam in this class. However, there will be two closed-book quizzes covering the lecture material.

Lectures and Class Schedule (Subject to Revision!)

Week Date Event Handouts
1 Monday 3/28 Course introduction and DavisDB overview Lecture1.pdf
Wednesday 3/30 Memory management and serialization/deserialization in C++ Lecture2.pdf; Warmup homework
Friday 4/1 No class (NorCal DB Day)
2 Sunday 4/3 Warmup homework due @ 11:59pm Warmup homework sample solution
Monday 4/4 Buffer and file management Lecture3.pdf
Wednesday 4/6 Buffer and file management, cont'd; subversion and project logistics Lecture4.pdf
Friday 4/8 Introduction to database theory, part I: relational calculus and first-order logic Lecture5.pdf
3 Monday 4/11 Record File Manager cookbook session
Wednesday 4/13 Introduction to database theory, part II: containment, equivalence, and minimization of conjunctive queries Lecture7.pdf
Friday 4/15 Overview of indexing Lecture8.pdf
4 Sunday 4/17 Project Part 1 (Record Manager) due @11:59pm
Monday 4/18 Tree-structured indexes Lecture9.pdf
Wednesday 4/20 Overview of Project Part 2 (Indexing) Lecture10.pdf, Lecture10-s10.pdf
Friday 4/22 Introduction to XML Lecture11.pdf
5 Monday 4/25 DTDs, XML-Schema Lecture12.pdf
Wednesday 4/27 XPath, XQuery, XSLT Lecture13.pdf
Friday 4/29 XPath, XQuery, XSLT (cont'd)
6 Sunday 5/1 Project Part 2 (Indexing) due @11:59pm
Monday 5/2 XPath, XQuery, XSLT (cont'd); Quiz overview Lecture16.pdf
Wednesday 5/4 Quiz #1; Project Part 3 (System Manager) overview Lecture17.pdf
Friday 5/6 Overview of Query Optimization Lecture18.pdf
7 Monday 5/9 Join algorithms Lecture19.pdf
Wednesday 5/11 External sorting Lecture20.pdf
Friday 5/13 Other physical query operators Lecture21.pdf
8 Sunday 5/15 Project Part 3 (System Manager) due @11:59pm
Monday 5/16 Overview of Project Part 4: Query Engine Lecture22.pdf
Wednesday 5/18 Query optimization: System R Lecture23.pdf
Friday 5/20 Query optimization, cont'd
9 Monday 5/23 Transactions and concurrency control Lecture25.pdf
Wednesday 5/25 Concurrency control Lecture26.pdf
Friday 5/27 Concurrency control, cont'd
10 Sunday, 5/29 Project Part 4 (Query Engine) due @11:59pm
Monday 5/30 No Class (Memorial Day)
Wednesday 6/1 Quiz #2 review session; course evaluations
Friday 6/3 No Class (Instruction Ends 6/2)
11 Monday 6/6 @ 8:00am Quiz #2 and Awards Session


Basic policy: project (80%), quizzes (20%). More detailed breakdown:
Project Part 1 20%
Project Part 2 20%
Project Part 3 15%
Project Part 4 25%
Quiz #1 10%
Quiz #2 10%
Project component grading: correctness (80%), efficiency and style (20%)