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.
- A copy is available on 3-hour loan at the DC library under call number UWD1512.
The Design of Everyday Things, 2013, by Don Norman.
- A copy is available on 3-hour loan at the DC library under call number TS171.4 .N67 2013.
Designing with the Mind in Mind: Simple Guide to Understanding User Interface Design Guidelines, 2013, by Jeff Johnson
- A copy is available on a 3-hour loan at the DC library under call number UWD1568.
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.
To access your private repository for this course, you need to git-clone the repo to your local machine.
The command looks like this (replace username with your Quest login name, e.g. jdoe.git):
git clone https://email@example.com/cs349-spring2018/username.git
To submit assignments, you need to ‘git add’ new files, ‘git commit’ changes and ‘git push’ to the server (push sends it to the server to be graded!).
See Git tutorial slides for more information.
- Git Home is the main Git site (documentation, binaries)
- Chacon & Straub, Pro Git, 2nd Edition (2014) is the standard reference.
- Git Reference is great for quickly looking up commands.
- Ry’s Git Tutorial if you want a more complete understanding!
- Atlassian Git tutorials describes more advanced workflows.
Some of the assignments require that you create a makefile to build your code.
- Makefile Tutorial (by example) is a fast way to get the basics. If you’re uskng this for C++, some changes are required: header file includes need to change from foo.h to
</tt> and that some calls need namespaces (eg std::cout).
- The GNU Make Manual provides a comprehensive reference
- Java and makefiles work together just fine.
X Windows and Xlib
Reference information for writing X Windows applications.
- The Xlib Manual: An HTML version of the documentation from the X Consortium. A PDF version for X11R7.7 is available to download here. The document was automatically converted from Postscript; the table of contents is at the END of the document for some reason.
- Basic Graphics Programming With The Xlib Library (highly recommended).
- The X Window System, by Robert W. Scheifler and Jim Gettys, in ACM Transactions on Graphics, Vol. 5, No. 2, April 1986, pages 79-109, outlines the basic design goals of the X window system and gives an overview of its implementation.
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:
- Cay Horstmann, Core Java, APress, 2016
- The Java Tutorials provides broad and detailed information on many Java concepts.
The main resource for Android developers is http://developer.android.com/
Here’s some additional useful material.
Marko Gargenta, Learning Android, O’Reilly Media, 2011. A good introduction to basic Android development, including setting up developer tools. He does talk about MVC architecture, but implements it a bit more loosely that we do in the class.
- Gargenta, the author of Learning Android, has a series of video tutorials which cover similar material to his book.
- Lars Vogel has a good introductory tutorial on Android development using the 4.2 SDK (API 17). He first covers Android terminology, concepts, and the development environment. The actual tutorial starts in section 16.
- Advanced Design for Engineers (Google IO 2012 talk). A great review of visual design and design principles (affordances, feedback, gestalt principles) applied to Android UI.
- Android Design for UI Developers (Google IO 2013 talk). The most technical and detailed look at UI coding with a focus on the newest parts of UI toolkit and patterns.
- The Design of Everyday Things, by Donald A. Norman (Basic Books, 1988 and 2002). Norman explores the design of everyday things – light switches, doors, telephones, cars, and some computers. Along the way he delves into principles useful to user interfaces as well as trying to develop a better understanding of users.
- The Humane Interface: New Directions for Designing Interactive Systems, by Jef Raskin (Addison-Wesley, 2000). Jef was the chief designer of the Apple Macintosh and ushered in the current desktop metaphor.
- The GUI Design Handbook, Susan Fowler and Victor Stanwick.
This book is now out of print but is available on the web at http://www.fast-consulting.com/desktop.htm. It gives an overview of many different kinds of user interface components with guidance on what they are good for, how they are commonly misused, and helpful design guidelines. Not tied to any particular API.
- Designing from both sides of the screen, by Ellen Isaacs and Alan Walendowski (New Riders Publishing, 2002). Ellen is an interaction designer and Alan is a software engineer. They team up to explain in very clear and readable language how they designed an instant messaging system. They illustrate basic principles very concretely.
- GUI Bloopers: The Don’ts and Do’s for Software Developers and Web Designers, by Jeff Johnson (Morgan Kauffman, 2000). This book compiles a lot of wisdom in an easily accessible format. It’s illustrated with both positive and negative examples
- Englebart (“Mother of all Demos”)