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.
Computing is become data centered today. Databases have been at the heart of commercial applications for decades, but today both commercial and scientific organizations need to store and process huge volumes of data, and this requires and extension of data management techniques far beyond traditional database systems. Virtually every area of Computer Science today uses data management concepts. The purpose of this course is to discuss key concepts that underly both traditional databases and modern data management. This is a graduate class: we discuss all traditional topics and cover some of the in depth, and will also discuss some foundational material and some novel research topics.
Student learning goals
General method of instruction
The class meets twice a week. Most classes will consists of lecturing, but we will also have discussions. Please attend all lectures, since the material is not based on any particular text.
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. Some background in Algorithm, Data structures, and Computational Complexity is expected. Most notions will be defined in class, but it is difficult to follow the material without the required background. Students unfamiliar with most of the following topics should reconsider taking this 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
There are (1) homework assignments, (2) paper reading assignments, and (3) a small programming/research project. The exact number and nature of the assignments may differ from year to year.
The final grade is a weighted average of the homework assignments, reading assignments, and project.