Resources
These resources may be helpful for assignments, or to further explore specific topics.
Suggested starting points are marked with a
Programming Languages [ Java | Android | C++ ]
Human-Computer-Interaction (HCI) [ History | Design ]
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.
- Atlassian Git tutorials describes more advanced workflows.
Make
Some of the samples include a makefile
to build the code; type 'make' if a makefile is present to build it, and `make run' to build and run it.
- Makefile Tutorial (by example) is a fast way to get the basics.
- The GNU Make Manual is a comprehensive reference.
- Java and makefiles work together just fine.
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 appropriate version of the Java JDK (which includes the compiler, JRE and so on). Although owned by Oracle, Java is an Open Source project. We suggest installing the appropriate OpenJDK version. You should NOT install from the Oracle site, which is restricted to commercial use.
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 Swing
- Java Swing Platform Documentation
- Oracle: Creating a GUI with Java Swing
- Java Swing Tutorial on javaTpoint.
- Java Swing Code Samples
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.
- Google I/O 2013 - The New Android SDK Build System
C++, X Windows and Xlib
Reference information for writing C++ X Windows applications. Although we don't write code in-class using XLib, some of the examples make use of this.
- 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.
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.