CS 4393 Topics in User Interfaces
Week 1: Introduction

Objectives:

Programming Topic: Introduction to programming environment

Case Study: Two-photo organizer

Reading:

Quote:

user /n./
  1. Someone doing `real work' with the computer, using it as a means rather than an end. Someone who pays to use a computer. See real user.
  2. A programmer who will believe anything you tell him. One who asks silly questions. [GLS observes: This is slightly unfair. It is true that users ask questions (of necessity). Sometimes they are thoughtful or deep. Very often they are annoying or downright stupid, apparently because the user failed to think for two seconds or look in the documentation before bothering the maintainer.] See luser.
  3. Someone who uses a program from the outside, however skillfully, without getting into the internals of the program. One who reports bugs instead of just going ahead and fixing them. The general theory behind this term is that there are two classes of people who work with a program: there are implementors (hackers) and lusers. The users are looked down on by hackers to some extent because they don't understand the full ramifications of the system in all its glory. (The few users who do are known as `real winners'.) The term is a relative one: a skilled hacker may be a user with respect to some program he himself does not hack. A LISP hacker might be one who maintains LISP or one who uses LISP (but with the skill of a hacker). A LISP user is one who uses LISP, whether skillfully or not. Thus there is some overlap between the two terms; the subtle distinctions must be resolved by context.

-- The New Hacker's Dictionary

Administrative details:


Course themes:


What is usability?

Here are some other definitions:

Usability measures:

Universal usability: Use by anyone, anytime, anywhere....

What are the barriers to universal usability?

An example of usability guidelines: http://web.mit.edu/ist/usability/usability-guidelines.html

Techniques to insure usability in the design process:

More details about methods can be found at Usability Methods Toolbox

It is easier to find examples of bad design then to construct a good design...see for example:


Exercise 1: Open MS PowerPoint and evaluate the basic layout and workflow. Find the following components:

Exercise 2: Evaluate the layout of the print dialog in PowerPoint

Exercise 3: Use Eclipse to write a Hello World application.


Case Study: Photo viewer

We will develop a simple application that displays a picture with an settable title. learn about layout, about event management and the elements of design. We will be using Java Swing components for building our interfaces. You should bookmark the Java Swing Tutorial for examples of how to use different Swing components.

Exercise: Write a program which displays one of two images depending on which button is pressed:

For testing purposes, download the following images into the resources subdirectory of your photodisplay:

Event handling in GUIs are based on the observer design pattern.

Example: High-level component events in Java (such as button pressed) are represented by the ActionEvent:

For a full list of the standard design patterns, see: Design Pattern Mattrix from Net Objectives.


For Monday: BRING TO CLASS. You should make a copy of these. You will hand in the copy at the beginning of class. We will then discuss and work with partners on some aspects of this.