How are are interactive systems structured? What makes a user interface tick? This course
looks at the software paradigms and technologies behind Human-Computer Interaction (HCI).
It will provide students with an understanding of the technical concepts and software
paradigms particular to user interface development, with both a historical review of
existing systems and their relative merits and problems, and with an understanding of how
future, post-desktop user interface software technologies can be explored, designed, and
The course will begin by reviewing key user interface hardware and software concepts that
led to the Graphical User Interface (GUI), and by analyzing the generic components of
typical GUI toolkits. After that, a review of seminal GUI systems, from the Alto/Star and
Smalltalk, to the Macintosh, X/Motif, AWT/Swing, to NeXT and Mac OS X, will provide both
a historic frame of reference and an understanding of the key paradigm shifts those
systems brought to the development of interactive systems, as well as their relative
merits and pitfalls.
We will conclude with a review of selected user interface technologies "beyond the
desktop", such as UI techniques for CSCW and ubiquitous computing.
A central part of the course is a series of assignments that include the design and
implementation of a simple reference model GUI toolkit, as well as programming exercises
with several existing UI toolkits, such as Java's Swing, Apple's InterfaceBuilder, and
Stanford's iRoom Operating System.
When: Tuesdays and Thursdays 9:15-10:45
Where: Meyer 143, Meyer Library
Prerequisites: CS147, plus working knowledge of Java (e.g. through CS193J)
First Day Of Class: Tuesday, April 2nd, 2002
Enrollment: Enrollment is limited to 20 students. To enroll, please come to the first day of class where we will provide a course overview, short questionnaire, and the first assignment. We will inform all students about admission within 24 hours afterwards.