Course Goals

Databases are at the heart of modern commercial application development. In addition, their use extends 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 data management systems for applications. Some of the topics covered are the following: data models (relational and JSON), 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.

Format

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 sometimes 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.

Assignments

There will be several homework assignments, involving light programming. See the homework page, which will be updated during the course with detailed instructions for each assignment. All due dates are also shown on the course calendar.

There will also be several web quizzes, administered by Gradiance. Please go to the linked page, create an account, and then use the class token given during the first lecture to find the quizzes for this course. The homework page also shows the due dates for web quizzes. Note that there are no late days allowed for web quizzes.

Exams

The course will have both a midterm and a final exam. See the exams page for more information, including times and locations

Grading

Homework assignments 30%
Web quizzes 20%
Midterm exam 20%
Final exam 30%

Textbooks

The required textbook for this course is:

  • Database Systems: the Complete Handbook, by Hector Garcia-Molina, Jennifer Widom, and Jeffrey Ullman. Second edition. See this page for more information about the book, including where it can be purchased.

In addition to the required textbook, the library has the following books 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

For homework assignments, you are allowed a total of four late days (each giving an additional 24 hours) with at most two late days per assignment. 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 one or two late days. If you end up using all two late days, you are most likely doing it wrong.

For web quizzes, no late days are allowed. We will use your highest score achieved on any attempt at the quiz completed before the due date as your score for that assignment.

Programming

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 applications & tools for the course:

  • Java
  • SQLite
  • SQL Server (via Microsoft Azure)
  • AsterixDB
  • Spark (via Amazon Web Services)

Course Tools

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; however, unless otherwise stated, each homework and programming assignment is to be done individually. In particular, the solution that you submit for each assignment must be solely your own.

Read through our academic integrity policy for a more detailed discussion. You are responsible for knowing the information in that document.

Academic Misconduct

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.

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."