PhD CS – Human-Computer Interaction Body of Knowledge

User Interface Software and Technology


In addition to understanding how to design and evaluate human-computer interfaces, you must also understand how to implement them effectively. Moreover, you must understand the structure of artifacts (window systems and toolkits) that enable programmers to build and maintain complex applications. As with any other area of computer software, there is a body of techniques, algorithms and approaches that have been built up over the years. This is especially true of the 2D WIMP (Windows, Icons, Mice, Pointers) interfaces found on all commonly available systems these days (ie. Windows, the Macintosh, and X). The goal of this section of the qualifier is to ensure that you are familiar with the body of knowledge related to user-interface software.

When looking at the reading list below, two things should strike you: first, most of the papers listed are quite old in "computer time" (over a decade, in some cases), and second, they focus almost entirely on building WIMP interfaces and say little about the newer, "off the desktop" user interfaces (that go by names such as Ubiquitous Computing, Information Appliances, Intelligent Environments, Augmented Reality, Wearable Computing, Tangible Media, and so forth). The papers are mostly old because the techniques and approaches on which current toolkits are built was the subject of research a decade or more ago; the best descriptions of these techniques is the papers that describe that research. The papers focus on 2D WIMP interfaces because current research on newer paradigms is still in the early stages; we will not know for a few more years which of the techniques being proposed by researchers is best.

While little definitive literature exists to describe the software and technology for non-WIMP paradigms, the abstractions and methodologies developed for building WIMP interfaces provide a framework for thinking about how one might approach the task of building software to support newer, non-WIMP paradigms. You should look at some examples of newer paradigms, perhaps by looking in the proceedings of the conferences discussed in the next section, and think about how these WIMP techniques do and do not transfer to these new paradigms.

General Resources

Surveys and detailed coverage of many user interface software and technology techniques are covered in CS 6456: Principles of User Interface Software.

Many papers in the ACM SIGGRAPH/SIGCHI conference series on User Interface Software and Technology, also known as the UIST conference, include significant examples of both toolkits and systems. This is also true to a lesser extent of the other ACM and IEEE sponsored conferences, especially CHI (Human Factors in Computing Systems). Many other ACM/IEEE conferences also contain examples relevant to their particular domain, although they are much rarer. Examples of such conferences include CSCW (more the ACM CSCW conference than the European ECSCW series), ISWC (Wearable Computing), HUC (Handheld and Ubiquitous Computing), ISAR/IWAR (Augmented Reality) and so on.

The Java Foundation Classes, aka the Swing Toolkit, are an excellent example of a state-of-the-art 2D UI software toolkit architecture. You should be familiar with this toolkit; a good place to start is the JavaSoft Swing documentation, including the Getting Started with Swing tutorial and the Swing Architecture document.

A good, introductory text on build UI software is:

  • Olsen, Jr., Dan R., Developing User Interfaces., Morgan Kaufman, 1998.

Keep in mind that this is a very introductory book; it is a quick read for people with UI programming experience, and will provide a good background on elementary 2D graphics and UI programming for those with little experience.

Historical and Broad Coverage Papers

Brad Myers has written a number of survey papers covering the history of user interface software. A good example is:

  • Myers, B. State of the Art in User Interface Software Tools. In Hartson, H. and Hix, D. (Eds.) Advances in Human-Computer Interaction. Ablex, 1993, pp. 110-150. Reprinted in: R.Baecker, J.Grudin, W.Buxton, and S. Greenberg, eds. Readings in Human-Computer Interaction: Toward the Year 2000. Second Edition. San Francisco: Morgan Kaufmann Publishers, Inc., 1995. pp. 344-356.

Recently, he and some co-authors wrote a paper summarizing the important milestones in UI software, and included a discussion of why certain techniques failed to catch on, and what some promising techniques might be for the future:

  • Brad Myers, Scott E. Hudson, and Randy Pausch, Past, Present and Future of User Interface Software Tools. ACM Transactions on Computer Human Interaction. To Appear in the Special Millennium Issue. Available as

Toolkit Issues

A good paper that describes one of the first toolkits to use composition of widgets (via container widgets and layout management) to form complex nested layouts:

  • Linton, M. A., Vlissides, John M., and Calder, Paul R., "Composing User Interfaces with Interviews", IEEE Computer, 22(2), Feb. 1989, pp. 8-22.

An important issue for toolkits is how to create an API that allows programmers to develop applications that degrade gracefully when the displays become complex. Tang and Linton describe an architecture for graceful degredation in the Interviews toolkit in:

  • Steven H. Tang and Mark A. Linton. "Pacers: time-elastic objects." In Proceedings of the sixth annual ACM symposium on User interface software and technology, 1993, Pages 35 - 43.

There is growing interest in creating interfaces that are more lively and engaging. There are plenty of examples of such interfaces in recent UIST and CHI proceedings. Here is a paper that describes how to integrate animation into a user interface toolkit. Their technique is described in the context of their toolkit (ARTKIT), but is easily adapted to any toolkit:

  • Hudson, S., Stasko, J., Animation support in a user interface toolkit: Flexible, robust and reusable abstractions. Proceedings of UIST '93, Nov. 1993, pp. 57-67.

One approach to flexible interface layout that has not caught on is constraints. A good paper on simple, one-way constraints (which are common in UI toolkits that try to use constraints), is:

  • Scott E. Hudson, "A System for Efficient and Flexible One-Way Constraint Evaluation in C++", GVU Tech report 93-15.

Finally, for a discussion of the issues surrounding the design space of input devices, see:

  • Stuart K. Card, Jock D. Mackinlay and George G. Robertson. "The design space of input devices", In Proc. CHI '90, pp 117-124.

Higher Level Tools

You should be familiar with UI Builders, aka Layout Editors, as every integrated development environment comes with one these days. There are other more powerful tools that are not common, however. For example, many folks have explored tools to create interfaces by demonstration:

  • Myers, B. A., McDaniel, R. G., and Kosbie, D. S., "Marquise: Creating Complete User Interfaces by Demonstration", Proceedings of InterCHI '93, Amsterdam, April 1993, pp. 293-300.

There was a significant amount of work in the late-80s/early-90s and so-called User Interface Management Systems. These tools were aimed at making interfaces easier to build by allowing the user to specify characteristics of the interface and then having the system build it. One of the earliest is systems generated simple menu-based dialog box interfaces from the annotated function prototypes in the programmers code:

  • Olsen D. R., "A Programming Language Basis for User Interface Mangement", Proceedings of CHI '89, Austin, TX, April 1989, pp. 171-176.

A good example of a much more advanced UIMS is the UIDE system. There are many papers describing many interesting aspects of the system; one good summary paper on it is:

  • Sukaviriya, P., Foley, J. and Griffith, T., "A Second Generation User Interface Design Environment: The Model and Runtime Architecture", Proceedings of INTERCHI '93, April 1993, pp. 375--382.

While UIMS research has largely ceased, it is important to understand it because of the growing interest in adaptive interfaces; those that adapt and change based on their user, the context of their use, or the characteristics of the device they are being used on. In order to create complex, adaptive interfaces, it is likely that many of the techniques developed for UIMSs will need to be used. You should think about how these techniques might be useful in such cases; how can we create an application that can present itself effectively on a wall-sized display, desktop display, or palm-sized display? Even more challenging, how can we have such applications adapt to non-visual displays? Retrofitting existing GUI-based applications to audio-only environments without cooperation from the application is extremely challenging, as discussed here:

  • W. Keith Edwards and Elizabeth D. Mynatt. "An architecture for transforming graphical interfaces." In Proceedings of the ACM symposium on User interface software and technology, 1994, Pages 39 - 47.