CSE 444 / CSEM 544



Course Goals

Databases are at the heart of modern 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. In the previous course, CSE 344, we learned how to use a variety of data management systems and we learned basic data management principles. In this course, we will study the principles behind building data management systems.

We now live in a world that is increasingly driven by data! This course will give you the conceptual knowledge and practical training for building the systems and tools necessary for handling all this data. We cannot tell you how to build the next generation of data management systems, but we will teach you important concepts that will help you invent such systems (then you should come back and tell us about what you built).

For the detailed list of topics and schedule, please see the course calendar.

Course Format

The class meets three times a week for lectures. We will follow parts of the recommended 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 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 may 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. Take notes.

In addition to lectures, there will be sections. The sections will discuss the material taught in class, give detailed instructions on how to get started with the lab assignments, and will give you an extra opportunity to ask questions.

There will be several lab assignments, involving significant programming and multiple written assignments that will prepare you for these practical labs and will help you practice the concepts that we are learning.

There will be no exams. Instead, you will write a final report on the system you will build throughout the quarter.

Lectures and Sections

Please see the course home page for lecture and sections schedule and location.

Lecture participation will be tracked through polling and graded on completion (not correctness). Participation will be graded as extra credit.

Section participation will not be tracked, but is HIGHLY encouraged; the TAs will be walking through concepts that may help greatly with completing your assignments.

Since lecture styles will vary quarter by quarter, please refer to the first lecture's slides/notes for details on polling and recordings.

Lab assignments

There will be five lab assignments. Please see the Homework/Labs page for details on due dates and submission instructions.

The labs will involve heavy Java programming. They will also use JUnit. We do not teach JUnit in this course. We assume that you have seen it in 331. If you have never used JUnit before, we encourage you to learn it as part of completing Lab 1.

Labs are to be done INDIVIDUALLY or with ONE PARTNER! It is OK for you to discuss your general approach to each lab with other students in the course.

Written assignments

There will be six written assignments to complement the lab assignments. Please see the "Homework & Labs" page for links to the assignments, due dates, and submission processes.

Written assignments are to be done INDIVIDUALLY! You are not allowed to discuss ANY aspect of your solution with anyone.


Grading breakdown is subject to change (slightly) if time prohibits the release of an assignment.

544M and 444 groups will be graded separately at the end of the quarter.

CSE 444 grading:

Labs (including the final lab): 50%

Final project report: 10%

Written assignments: 40%

CSE 544M grading:

An extra 10% will be added to the above for paper readings. Your grade will then be scaled back down from 110% to 100%.


The recommended textbook for this course is "Database Management Systems" by Raghu Ramakrishnan and Johannes Gehrke.

You can also use the same book as in CSE 344. "Database Systems: the Complete Handbook" by Hector Garcia-Molina, Jennifer Widom, and Jeffrey Ullman. Second edition.

Late Policy

You are allowed a total of 6 late-days that you can use in 24-hour chunks and at most 2 late-days per assignment. You can use late days for either labs or written assignments. No late-days can be applied to the final project due date. Please note that once you use-up your late days, no additional extensions will be granted for any reason at all. You should thus save your late-days only for true emergencies.


We hope you will attend every lecture. If you miss a lecture, talk to a classmate who was present, and be sure to check the discussion board for class messages.


The course website and discussion board will be used extensively to provide you with course information, such as the course schedule, lab and written assignments, and many other things.

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 Misconduct

All work turned in is expected to be your own. Although students are encouraged to study together, each student is expected to produce his or her own solution to the labs and written assignments. Coping or using sections of someone else's program, even if it has been modified by you, is not acceptable. We will use the standard tools to detect cheating.