Resources
There is no required reading in this course, but these resources may be helpful for assignments, or to further explore specific topics Suggested starting points are marked with a
Development Tools
Git
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. Details are included in the assignments and course notes.
Here's a list of Git resources that might be useful.
- Git Home is the main site for documentation, binaries.
- Chacon & Straub, Pro Git, 2nd Edition (2014) is the standard reference.
- Git Reference is great for quickly looking up commands.
- Learn Version Control with Git
Gradle
Gradle is a replacement for GNU Make that handles large projects. In particular, it is the default build system for Android projects. You can type 'gradle build' on the command line, but typically build within an IDE.
- Gradle home page includes reference information, download links.
- The Gradle User Manual is comprensive and up-to-date.
- Course: Gradle for Android and Java
Programming Languages
Java
You will need to install the Java JDK SE (which includes the compiler, JRE and so on). Although owned by Oracle, Java is an Open Source project. We suggest installing the appropriate version from one of these sites:
Books & Documentation
- Java SE Platform Documentation includes reference material, tutorials and sample code.
- Oracle Java Tutorials cover many aspects of the language. More specialized GUI tutorials are linked below.
- Cay Horstmann. 2016. Core Java (excellent non-free book).
- Cay Horstmann. 2017. Core Java for the Impatient (shorter, non-free book by the same author).
- Downey and Mayfield. 2016. Think Java (free online book)
Java FX
- Java FX home page includes downloads, documentation. Make sure to install the version that matches your JDK version (above). Here's instructions to get JavaFX working with IntelliJ projects.
- JavaFX Documentation Project: online book for JavaFX.
- Scene Builder (optional): you can install the Gluon Scene Builder to drag-and-drop and build interfaces for JavaFX.
- Sample: Basic JavaFX Project w. Scene Builder
- Cary Horstman (author of Core Java) has a free chapter about JavaFX! It includes lots of sample code.
- Oracle: Creating a JavaFX GUI
- Intro to JavaFX for Game Developers
- Javaspoint JavaFX Tutorial - recommended!
Tools
- IntelliJ Community is an excellent Java IDE, and free. Highly recommended for anything more than a simple project.
- Code Editor (optional): For something more lightweight, Visual Studio Code is a free multi-platform editor that supports debugging, plugins etc. in multiple languages. Sublime Text is a fantastic, non-free alternative. Whatever you choose, make sure it has some level of programming language support!
- Documentation Browser (optional): I like to have programming language documentation handy when coding; I use Dash on my Mac to download and browse Java documentation. Alternatives are Velocity for Windows or Zeal for Linux/Windows. Most docsets can be downloaded directly in the app, although JavaFX needs to be downloaded and manually added.
Android
The main resource for Android developers is the Android Developer Site, which includes links to download Android Studio, design guides, documentation and sample code.
- Android IDE: You will want to install either Android Studio or IntelliJ Community.
- Android API Reference is the complete documentation.
- Android Samples covers all aspects of the platform. Look here first for samples.
- Learning Android in 2019 contains helpful links.
- How to pinch, zoom and pan in the emulator
- Android SDK: handling multitouch gestures
HCI Topics
History of Interaction Research
- Ivan Sutherland's Sketchpad
- Video (15:10) Alan Kay on Sutherland and Englebart
- Video (3:46) Similar to the above but a different setting and with better sound quality.
- Video (6:51) Demo of Sketchpad from MIT
- Video (10:35) Newscast about Sketchpad
- Douglas Englebart's “Mother of all Demos”
Design
- Donald A. Norman. 1988, 2002. The Design of Everyday Things. Norman explores the design of everyday things – light switches, doors, telephones, cars, and some computers.
- Jef Raskin. 2000. The Humane Interface: New Directions for Designing Interactive Systems. Jef was the chief designer of the Apple Macintosh and ushered in the current desktop metaphor.
- H. Beyer and K. Holtzblatt. 1997. Contextual Design: Defining Customer-Centered Systems. Morgan Kaufmann Publishers.
- Dan R. Olsen Jr. 2010. Building Interactive Systems. Course Technology.
- Alan Cooper. 2014. About Face: The Essentials of Interaction Design. Wiley.
- Jeff Johnson. 2013. Designing with the Mind in Mind: Simple Guide to Understanding User Interface Design Guidelines. Morgan Kaufmann.
- W. Lidwell, K. Holden, J. Butler. 2010. Universal Principles of Design. Rockport Publishers.
- Steve Krug. 2013. Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability. New Riders.