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:
- 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.
- 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.
- 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:
- 25% Midterm Exam
- 25% Final Exam
- 50% Projects
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:
- Windows
- Pezold, C. & Yao, P. Programming Windows 95, Microsoft
Press, 1996.
- Motif
- Nye, A. and O'Reilly, T. X Toolkit Intrinsics Programming Manual:
OSF/Motif 1.2 Edition, Volume 4 in The Definitive Guides to the
X Window System, O'Reilly & Associates, 1993.
This volume may also be called "Volume 4M" rather than Volume
Four: Motif Edition. In any case, the ISBN is 1-56592-013-9.
- Heller, D. and Ferguson, P. M. Motif Programming Manual for
OSF/Motif Release 1.2, Volume 6A in The Definitive Guides to the
X Window System, O'Reilly & Associates, 1994.
There is a wealth of information on Motif available on the net. You
might contact http://www.motifdeveloper.com
(formerly www.cen.com/mu3) as a starting point. That site includes
a Frequently Asked Questions (FAQ) list. And I have made a copy of
the November 1996 version here.
- Java
- Arnold, K. and Gosling, J., The Java Programming Language,
Addison-Wesley, 1996.
- Chan, P. and Lee, R., The Java Class Libraries: An Annotated
Reference, Addison-Wesley, 1997.
Christopher Vickery
Computer Science Department
Queens College of CUNY
Home Page