These resources are required or useful for assignments, or to explore specific topics.


There are three optional, but recommended textbooks:

Building Interactive Systems, 2010, by Dan R. Olsen Jr.

The Design of Everyday Things, 2013, by Don Norman.

Designing with the Mind in Mind: Simple Guide to Understanding User Interface Design Guidelines, 2013, by Jeff Johnson


We will be using Git, a distributed version control system, for assignment submissions.

You are expected to setup your account on the UW Git installation, and “push” your assignments to a private repository on that server to submit them. As per assignment policies, you are not allowed to publically post your assignments online in any other location.

See Git tutorial slides for more information.

Git resources


Some of the assignments require that you create a makefile to build your code.

X Windows and Xlib

Reference information for writing X Windows applications.


For Java assignments, we use Java SE 10.0.1 SDK and IntelliJ Community 2018.1.

The main resource for Java programmers is the Java SE Platform Documentation.

There’s a lot of great Java reference material online. Here’s some suggestions:


The main resource for Android developers is

Here’s some additional useful material.