CS-381.3/781.3 -- Graphical User Interface Design

Introduction

This course introduces and explores the principles of Graphical User Interfaces (GUIs). Historically, operating systems such as UNIX, DOS, and others have provided a text-only interface for users. These systems require users to type commands to launch applications; the applications themselves display only characters and accept input only from the keyboard. With the advent of the Macintosh computer, user interfaces based on bit-mapped graphical displays have supplemented text-only user interfaces, with Microsoft Windows and the X Window System being common examples in addition to the Macintosh.

While everyone is familiar with the use of GUIs, our curriculum has not previously dealt with the concepts and programming techniques that are used to implement GUI applications. GUI terminology and programming models are significantly different from traditional text-only systems. For example, GUI applications have to deal with the fundamental shift in programming style that comes from giving the user two different input devices (keyboard and mouse) that the user might activate at arbitrary times. Furthermore, instead of output consisting of only ASCII character codes, all output, even text, involves generation of graphical images.

The course begins with the study of the X Window System, which was developed as an alternative to the traditional command-line interface to the UNIX operating system. (Implementations now exist for other operating systems as well.) The X Window System provides three significant advantages over other windowing systems as a vehicle for studying GUI design:

  1. The rationale of the X Window System is at least as well documented as the design itself. This feature is due primarily to the fact that the X Window System was developed in an academic environment. It was developed at MIT with funding from several major UNIX vendors.
  2. The System is large and complete, but it is very cleanly structured. The design of the higher layers of the system are a case history of careful object-oriented design, done without using an object-oriented implementation language.
  3. The system is unique among windowing systems in that it makes a very clean distinction between applications and the implementation of their graphical interface. In particular, building on UNIX's unique (at the time X was developed) networking strengths, X applications and the software that manages the user's graphics i/o devices (pointer, screen, and keyboard) may as easily run on separate computers as on a single processor.
Students will select one of three windowing systems for doing course projects, the X Window System (using the Motif widget set), Microsoft Windows, or the Java Abstract Window Toolkit (awt). Once basic concepts an terminology have been introduced using the X Window System, the remainder of the course will consist of an exploration of how the three implementation environments relate to the basic concepts introduced in our study of X.

Course Requirements

There will be a midterm exam, a final exam, and one or more "significant" programming assignments. Each student will do the assignments individually. There is to be no collaboration or group work on projects. Approximate weights for computing the final average for the course will be:

Textbooks

For the first part of the course, I will be using Scheifler, R. W. & Gettys, J. X Window System Third Edition, Digital Press and Prentice-Hall, 1992. The Digital Press ISBN is 1-55558-088-2, and the Prentice-Hall ISBN is 0-13-971201-1. The book is out of print (there is a later edition that distributes this material across three separate volumes), so it may be difficult to obtain, and is not required for this course.

A PostScript copy of the Xlib chapters of this book (minus the figures) is available from ftp://babbage.cs.qc.edu/pub/vickery/xlib.ps">[link no longer valid]. I will distribute hardcopy printouts of parts of this file in class.

Different students will need different reference materials, depending on which development environment they choose. The following is my list of recommended books for the three development environments:


Christopher Vickery
Computer Science Department
Queens College of CUNY
Home Page