Useful core language links

Here are some resources on Java that we've drawn together from the course materials and elsewhere.


Core language elements

Introduction to binary counting

Operator precedences

Full list of primitive data types

Code Conventions for the Java Programming Language

Reading documentation comments

Writing documentation comments

Here's a quick link to the API Docs

How to be a programmer

New 2 Java


More advanced language elements

Introduction to the Collections Framework

Looping through collection-style objects

Introduction to Swing

Introduction to Generics

Additions in Java 1.5

Additions in Java 7

Additions in Java 8

Cloning objects (copying complex objects).

Java Native Interface (docs) (how to connect to non-java code)

RXTX (how to connect to hardware using serial ports, e.g. scientific equipment)

Java2D (better image and drawing manipulation).

JavaFX (better GUIs).

Java Webstart (a way of getting your programs to run over the web)

JavaBeans (a way of allowing other people to develop programs)

Servlets (programs to produce web pages)

JavaServer Pages (programs to embed data in webpages)

Introduction to Autoboxing

bitshifting by Kushal Paudyal

Image streams and filters chapter from O'Reilly

Double buffering




Helpful for developers

Open Source Initiative website

Creative Commons licenses

Stack Overflow

Patterns and Anti-Patterns

Software development processes

Commonly used data formats: HTML, XML, and JSON (see w3schools for tutorials)

Counting in binary and hex

HTML tutorial

XML tutorial




The best introductions are these articles by Stephen Palmer:

A Picture Can Save a Thousand Words: UML Class Diagrams and Java

More Symbols, More Diagrams, More UML: Beyond Class and Interaction Diagrams

Getting Dynamic: Java and UML Interaction Diagrams

Just Typical: UML Stereotypes and Class Archetypes

You might also like to check out...

IBM's UML tutorials

Rational Software's UML resource page

The best book on UML is:

UML Distilled, Martin Fowler and Kendall Scott (2003), Addison Wesley; ISBN: 0321193687 (~£24)
Although not specifically a Java book, this also contains a lot of good advice about object orientated programming.

Good UML software includes:

Dia: Basic looking, but good for a wide variety of diagrams.
Violet: Simple but good UML editor.
Argo: Complex but highly featured editor.



The user experience

Classic paper on how users learn and use software:
Carroll, J. M., & Rosson, M. B. (1987). The paradox of the active user (pdf). In J.M. Carroll (Ed.), Interfacing Thought: Cognitive Aspects of Human-Computer Interaction. Cambridge, Mass: MIT Press (pp. 80-111).

Example paper on designing for mouse-driven GUIs:
Berkun, S. (2000) Fitts's UI Law Applied to the Web Microsoft Research.

IBM Design : Site with details of good design policy and testing usability User design consultation processes at IBM.

Groups dealing with Human-Computer Interaction research at Microsoft can be found on their research groups page. See also these publications.

Apple's OS X Human Interface Guidelines and iOS Human Interface Guidelines.

Google's Android design advice.

Smashing Magazine: Web and App design.

Ask Tog: User interface design site.

Ignore the Code: Lukas Mathis' interaction design blog.

Human-Computer Interaction Resources.