Course Goals

Databases are at the heart of modern commercial application development. Their use extends beyond this to many other environments and domains where large amounts of data must be stored for efficient update, retrieval, and analysis. The purpose of this course is to provide a comprehensive introduction to the use of management systems for applications. Some of the topics covered are the following: data models (relational and XML), query languages (SQL, datalog, etc), transactions, parallel data processing, and database as a service. For the detailed list of topics and schedule, please see the course calendar.


The class meets three times a week for lectures. We will follow parts of the textbook (see below). While the lectures are designed to be clear and self-contained, and to cover all the material used in class, you are strongly encouraged to read from the textbook, both in order to get a better understanding of the material covered and to learn about related topics, which are not covered in class. Please note that the lectures will be a combination of whiteboard, powerpoint, and live demos. Lecture notes will be made available online, but they are brief and insufficient to learn the material. The lesson is: do not miss classes, and do take notes.

In addition to the lecture there will be sections taught by the TAs. The sections will discuss the material taught in class, will give detailed instructions on how to use some of the software needed for the homework assignments, and will give you an extra opportunity to ask questions.

There will be several homework assignments, involving light programming, several Webquizes on Gradiance, and two exams (midterm and final).

Catalog Description

Introduction to Data Management: Introduces database management systems and writing applications that use such systems; data models (e.g., relational, semi-structured), query languages (e.g., SQL, XQuery), language bindings, conceptual modeling, transactions, security, database tuning, data warehousing, parallelism, and Web-data management. Prerequisites: CSE 311 or CSE 321. 4 credits.

Here is a more specific list of potential topics that will be covered in this quarter's 344:

  • Data models
  • Query languages
  • Schema, logical, and physical design
  • Database applications
  • Transactions
  • Data analytics
As this class is evolving, the list of topics might change over the quarter.

Grading and Exams

  • Homework assignments: 30%
  • Webquizes: 10%
  • Midterm exam: 20%
  • Final quiz: 30%
  • Class participation: 10% (participating in lectures, sections, discussion boards, etc)
Please note that these breakdowns are preliminary as this class is constantly evolving and we reserve the rights to change them.

Main Textbook

Database Systems: the Complete Handbook, by Hector Garcia-Molina, Jennifer Widom, and Jeffrey Ullman. Available from the University Bookstore. Second edition.

Other texts:
The library has the following that you might find useful if you require another explanation of a topic.

  • Fundamentals of database systems by Elsmasri and Navathe.
  • Database management systems by Raghu Ramakrishnan and Johannes Gehrke.
  • Foundations of database systems by Abiteboul, Hull and Vianu.

Late Policy

Homework assignments: you are allowed a total of 4 late-days with at most 2 late-days per assignment that you can use in 24-hour chunks at anytime. Once you use-up your late days, no additional extensions are granted for any reason! Late submissions will not be graded. Think of late days as a safety net in case of a true emergency, not as a convenience. Normally, you should use no late days during the entire quarter; if you do have an emergency, then you should use 1 or 2 late days. If you end up using all 4 late days, you are doing it wrong.

Webquizes: there are no late days allowances for Webquizes, and all webquiz grades will be counted. You may retry a webquz as often as you want: the highest score you have achieved on Gradiance as of the due date is your score for that assignment.


Some programming will be necessary in this course. One can only start to appreciate database systems by actually trying to use one. Databases only hold the data, the application logic needs to be written in some general purpose language. We will use the following tools in class:

  • SQLite
  • XQuery (saxon he)
  • SQL Server on Windows Azure (Microsoft's Web Service)
  • Java
  • Amazon ec2


The course website and mailing list will be used extensively to provide you with course information, such as the schedule mentioned above, homework assignments and solutions, class messages and many other things. There is a discussion board that everyone should use to keep in touch outside of class. Please see the main webpage of the course for details.

Collaboration policy

You are encouraged to discuss the content of this course with anyone you like. Unless otherwise stated, each homework and programming assignment is to be done individually.

Computer use policy

Some excerpts from the campus policies. Take them seriously: "You must use all UW [computing] resources in strict accordance with local, state, and federal laws. These laws cover such areas as illegal access to computer systems, networks, and files; copyright violations; and harassment issues... Software and information resources provided through the university for use by faculty, staff, and students may be used on computing equipment only as specified in the various software licenses. Unauthorized use of software, images, or files is regarded as a serious matter and any such use is without the consent of the University of Washington...If abuse of computer software, images, or files occurs, those responsible for such abuse will be held legally accountable."

Academic integrity

Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are in a separate document. You are responsible for knowing the information in that document.