Time Schedule:
Dan Suciu
CSE 544
Seattle Campus
Data models and query languages (SQL, datalog, OQL). Relational databases, enforcement of integrity constraints. Object-oriented databases and object-relational databases. Principles of data storage and indexing. Query-execution methods and query optimization algorithms. Static analysis of queries and rewriting of queries using views. Data integration. Data mining. Principles of transaction processing.
Class description
The class covers both relational databases and semistructured data (XML). Students learn mathematical foundations of data models and their query languages, both relational and semistructured (XML), will learn how to use a real database system and run SQL queries, both ad-hoc and via JDBC, and will learn some aspects related to database implementations, such as physical operator evaluation and optimizations.
Student learning goals
General method of instruction
There are two weekly lectures. We will not follow the textbook too closely, but students are encouraged and sometimes required to read chapters from the textbook as they complement and expand the material taught in class. There will be some reading assignments of research papers.
Recommended preparation
Everyone taking this class should be familiar with Java and/or C++, and should have written at least a few thousand lines of code in the past. A Theoretical background in Algorithm, Data structures, and Computational Complexity is expected. Most notions will be defined in class, but if students unfamiliar with most of the following will have trouble following the class: sorting, O(n log n), O(n^2), dynamic programming, search trees, B trees, hash tables, PTIME, NP, undecidable, first order logic, quantifier, finite automata, regular expression.
Class assignments and grading
the first homework will be a small database application project, and will require Java programming with SQL and JDBC. All other homeworks will be theoretical. The project will be a small research project, most likely involving XML processing.
The final grade is a weighted average of the homeworks, project, and final. The final is usually difficult.