Syllabus

Please see the main page of this website for scheduling information (lectures, sections, office hours, exams).

Instructor: Shana Hutchison, shutchis@cs.washington.edu

Course Goals

Databases are at the heart of modern commercial application development. Efficient update, retrieval, and analysis are requirements. The purpose of this course is to provide a comprehensive introduction to the use of management systems for applications. Some topics covered are data models (relational and json), query languages (SQL, Spark, etc), transactions, parallel data processing, and database-as-a-service. For the detailed list of topics and schedule, please see the course site's main page.

Format

Lectures: three times per week. We will follow parts of the textbook (see below). While lectures are designed to be clear and self-contained, and cover all the material used in class, you are strongly encouraged to read from the textbook, both in order to better understand the material covered and to learn about related topics, which are not covered in class. Lectures will be recorded and made available via Panopto.

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

Homework: involve light programming and written questions. Homework assignments may be individual or in partnerships.

Exams: midterm and final.

Office hours: while not technically a requirement of the course, we suggest you attend one office hour per week in order to (1) meet other students taking this course, (2) ask TAs questions, and (3) force yourself to work on this course.

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, datalog), language bindings, conceptual modeling, transactions, security, database tuning, data warehousing, parallelism, and Web-data management. Prerequisites: CSE 143 (minimum grade of 2.5). 4 credits.

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

  • Data models
  • Query languages
  • Schema, logical, and physical design
  • Database applications
  • Transactions
  • Data analytics
  • NoSQL
  • Cloud database systems

As this class is evolving, the list of topics might change over the quarter.

Main Textbook

Required: Database Systems: the Complete Book, 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.

Homework

Before each assignment is released, you will receive an email with a team assignment. A repository on CSE GitLab will be created for your team. Please submit your assignments by pushing a commit with your solution to your repository by the assignment due date.

Homework Late Policy

Please do your best to submit homework on time! Yes, life happens, but we expect you to communicate with your team to ensure that you can meet the deadline.

Homework may be submitted late, with a penalty of 10% per day, up to two days following the due date. No submission will be accepted from two days after the due date. "Days" are counted in 24 hour chunks.

You are allowed one free late day per partnership. A free late day will not incur a 10% penalty. Partnership late days do not carry over to future partnerships.

Technical difficulties are the most commons source of late day use. If you are submitting minutes before the deadline, you will not have time to work through submission difficulties you may encounter. Some tips:

  • Submit early
  • Check that you submitted the correct files
  • Check the names of your files
  • Check that your files are executable

Grading and Exams

  • Homework assignments: 40% - based on correctness and timely submission
  • Team dynamics: 10% - based on contribution, communication, and reflection as collected from surveys
  • Midterm exam: 20%
  • Final exam: 30%

Please note that these breakdowns are preliminary as this class is constantly evolving. We reserve the right to change them.

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 tools in class:

  • SQLite
  • SQL Server on Windows Azure (Microsoft's Web Service)
  • Java
  • Amazon EC2
  • Spark
  • AsterixDB

Tools

The course website is the main source of course information. A calendar is available for subscription should you wish to add the lecture/section times, homework deadlines, and exam dates to your own calendar. There is a discussion board that everyone should use to keep in touch outside of class. The class mailing list will be used for occasional announcements. 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. Each team should write and submit their own assignment solutions.

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 conduct

An iSchool professor, Amy Ko, wrote the following guidelines. I repeat them here as they really hit the spot!

  • Respect each other's humanity. We all have lives, struggles, fears, and goals. You're more than a student, I'm more than a professor, your TAs are more than TAs, and your classmates more more than classmates. Start every conversation remembering that.
  • Respect each other's differences. Technology is for people and people are different: learn about each other's different perspectives, experiences, and ideas.
  • Focus on learning, not grades. Having knowledge and skills is what gets you into majors, internships, jobs, and graduate school. Grades are imprecise, narrow measures of what you know and can do, so if you optimize for them instead of skills, you'll end up with narrow knowledge and skills.
  • Be resourceful. Ask questions, ask for help, and seek expertise. It can be scary to admit you need help, but I expect that you need help. That's how learning happens.
  • Be confident. Even if you don't believe you can learn something, I believe you can. It just takes the right instruction, the right practice, and the right feedback. Most of those are my job, so if you're struggling, it's probably my fault.
  • Be demanding. I want this course to be great. If you don't like how it's going, give me feedback. The only way I can make it better is if you tell me what's wrong.
  • Be skeptical. If you don't believe something I say, demand evidence or a better argument. If you hear about some exciting new technology, probe closely to understand its true merits.
  • Be constructive. Don't just critique ideas; use your knowledge of their limitations to make them better. This is especially important when you collaborate with other people.
  • Don't deceive. Tell the truth, even it's hard to share. You didn't do your homework? Admit it, and let's find a way for you get future assignments done on time. You don't understand something? Admit it, and let's help you understand it. You don't want to learn something? Admit, and let's find a way to make it more interesting to you.

Academic integrity

You're here to learn, aren't you? Plagiarism is not the way! If you really feel that the course structure incentivizes you to cheat in order to maximize your learning, please contact me (the instructor). I'd rather receive your feedback proactively than report your actions to the university reactively.

The guidelines for this course and academic integrity in general are in a separate document. You are responsible for knowing the information in that document.

Accommodations

There are two important kinds of accommodations you can request to support your learning in this class:

  • Accommodations for disability. I strongly encourage you to reach out to Disability Resources for any and all accommodations you might need. They're helpful, constructive, and private, and I'm 100% supportive of anything you need. You don't have to go through DRS to ask for accommodate; you can just ask me, if you feel comfortable.
  • Accommodations for religion. Washington state law requires accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Faculty Syllabus Guidelines and Resources. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form. I'm fully supportive of this policy; your life is bigger than this class.