CS789, Spring 2007

Lecture notes, Week 1

History of User Interfaces

The idea behind this history. Suppose that we raise the threshold for importance high enough that only one important new concept has occurred in each of the five decades since the computer was invented. What are they? How have they changed user interfaces?

But first we need to defines some terms.


Individual applications have user interfaces (UIs). A user interface can be instantiated or managed by a user interface management system (UIMS). Making these can be considered an engineering discipline: designing useful artifacts.


A UI should fit its users well. To make this happen the design process requires knowledge about how computers and humans interact interact, which is created by a scientific process that investigates humans & computers as they interact, seeking universal laws that describe the interaction

0. The Computer

The computer executes a sequence of instructions, manipulating its internal state, consuming input and producing output.

Branch one: the engineering branch

Branch two: the computer as programmable object

Single programmers are able to create these superb artifacts out of the most malleable substance yet discovered.

N. B. The branches will be seen to be rejoining one another toward the end of computer evolution.

1. Writing Programs - 1950-1970

The Compiler

The compiler is used to assemble program fragments into a program.

Using it effectively requires

In providing this we have the following problems to solve

They are solved by the following interface innovations

2. Running Programs - 1970-1990

Operating systems provide the ability to manage on-line, multiple (independent) computations (multi-programming).

Using them effectively requires

In doing this we have the following problems to solve

They are solved by the following interface innovations

N. B. Changes associated with the invention of operating systems influence how the compiler is used. (E.g., the teletype makes possible the screen editor.) The recursive nature of computation means that examining a program (the listing) or changing it (the card-deck) can now be done by running a program under the supervision of the operating system. What's important here is that interface innovation is cumulative.

3. Interacting with Programs - 1990-present

These are tools for manipulating documents that are semi-structured. The program determines part of the structure; the user determines the rest. The first part of the structure is global (to the program); the second part is local (to the document).

Using them effectively requires

In doing this we have the following problems to solve

They are solved by the following interface innovations

4. What Next?

These are applications, like web-browsing, that require wide-area access to semi-structured data. This data is very similar to the information stored in the human brain; to use it effectively it is necessary to compete successfully against human memory.

Using them effectively requires

In doing this we have the following problems to solve

The interface innovations we expect to support this are


Constraints on learning

1930s to 1950s: Watson & Skinner

1990s to present: neuroscience aka wetware

What kinds of things do users know?

They know

  1. facts, "Ottawa is the capital of Canada", knowing that
  2. procedures, putting a spoon into your mouth without hitting your lips, knowing how
How do we learn these different types of knowledge?

"Knowing how" can be divided into four different categories

  1. Operational, perceptual/motor capabilities: how to move fingers and aim them at keys
  2. Rule-based, motor programs triggered by categorical perception: to end input hit ESC (to start command hit ESC)
  3. Cognitive procedures, sequences of rules that solve stereotyped problems: to look at every ifdef in vi, type /ifdef, look at what you got, then type / repeatedly, watching for reappearance of the first occurrence.
  4. Problem analysis and solution, creation of new cognitive procedures: to find the bug check all the ifdefs
How do we learn each one of these?

Here's another way of clssifying things that users know

  1. Recognition: Which of "Exit" or "Quit" exits from WordPerfect
  2. Recall: "lc" gives the contents of the current directory at Waterloo
For recall we can generate the knowedge from nothing; for recognition we can recognize the knowledge when we see it. How do we learn each one of these?

Ways of changing knowledge = "learning"

Techniques of learning
  1. Trial-and-error: putting on a nut, riding a bicycle
  2. Practice = rehearsel: using a hammer
  3. How-to-do it descriptions: cookbook recipes
  4. Modification of examples: making html pages
All these take time. How much time? What incentives are we (users) normally given to spend the time?

And an orthogonal classification

Styles of learning
  1. Search, result-motivated: goals, how to set the time on the clock radio in a car
  2. Browsing, exploration: curiosity, bi-product, where does that tunnel go?
What are the rewards that normally induce us (users) to undertake one or another of these learning paths? Search is possible when you already know a lot; exploration is the only thing that's possible when you know very little. But, exploration pays off more as you learn more. Why?

And another orthogonal classification

Sources of learning
  1. Manuals, help pages: recipes, principles, examples.
  2. Experimentation: empirical information, observations.
  3. Other users: solutions, analogies, models.
As you enlarge the community of users to which you belong the last source becomes more and more important. Note the effect of positive feedback.

Note. Testing the solution is a normal termination step in many learning processes. How many times should a solution be tested? What determines how many times a particular piece of learning should be tested?

Return to: