05-830, User Interface Software, Spring, 1997

Number: 05-830 (offered by the Human Computer Interaction Institute)
Time: MW 9-10:20
Room: Wean 3412
1 CS PhD Elective Core Unit
12 University Units
Approved for MS credit for INI, MSE and HCII master's

Instructor: Brad Myers

Office: Wean Hall 1315
Phone: x8-5150
E-mail: bam@cs.cmu.edu
Office hours: By appointment
Secretary: Ava Cruse,
Wean 1305
TA: None

Course Web Page:

You are looking at the course Web page.  The URL is: http://www.cs.cmu.edu/~bam/uicourse/1997spring/


The course schedule of topics and readings is available at http://www.cs.cmu.edu/~bam/uicourse/1997spring/schedule.html

Benchmarks created by the class

Class List for Spring, 1997


After a quick overview of the design of user interfaces, we will concentrate on how to implement the chosen design. Particular emphasis will be placed on user interface software tools, such as windowing systems, toolkits, interface builders, prototypers, and advanced user interface development environments. In particular, the course will cover MS Windows, OLE, MFC, Macintosh Toolbox, MacApp, PowerPlant, OpenDoc, X/11, Motif, Visual Basic, Director, HyperCard, Java AWT, Java Beans, and various research systems like Amulet, InterViews, Fresco, and ArtKit. Each student will implement small project on at least 4 different user interface tools during the semester. Students will study and use the "usability engineering" development methodology and will compare and evaluate the various tools for ease of learning and effectiveness.

Unlike the previous offering of this course, there will not be a final group project. Instead, the students will individually each implement a much smaller test program (about 1000 lines) using four different user interface tools, so the students can get a better appreciation of the differences among tools. Students will all use an interactive prototyping tool first, like HyperCard, Director or Visual Basic. Then each student will implement the same interface in three other "high-level" tools, which will be chosen so that the full range of tools is covered by members of the class.

This is primarily a MS and PhD level course but some advanced undergrads may be admitted with permission of the instructor. No prior HCI experience is required. PhD students in the class will help present the course material by investigating and lecturing on various toolkits.

Why Study This?

Surveys show that over half of all programming time is spent on the user interface portion across a wide variety of application types, and this percentage is increasing as requirements for more complex interfaces grows. In addition, the tools and methods available for building user interfaces continually change and improve. Therefore, it is vital for software engineers to be familiar with user interface design and user interface software.


15-212 or considerable programming experience. Experience with object-oriented programming and/or software engineering is desirable. Prior experience with user interface design is NOT required.

Required text

Jakob Nielsen. "Usability Engineering". Boston: Academic Press, Inc. 1993. ISBN 0-12-518405-0.
Note: this text is primarily used in the first part of the course.

Recommended texts

These are primarily for your interest, and will not be directly covered by the course material. The first one (by Norman) is a must read for any user interface person. The second (by me) discusses new research approaches for UI Software programming languages, and discusses how to go beyond todayÕs tools and techniques. One copy my book is on reserve in the library if you want to look over it.

Donald A. Norman, "The Design of Everyday Things". New York: Doubleday, 1988. ISBN 0-385-26774-6 (paperback) $12.95

Brad A. Myers, "Languages for Developing User Interfaces", Wellesley, MA (289 Linden Street, 02181, 617-235-2210): A.K. Peters, LTD, 1992. ISBN 0-86720-450-8. $49.95


Unfortunately, there is no text that covers the bulk of the course, so there will be extensive readings handed out. In order to prioritize your work, I have marked all readings as "required" or "optional." The tests will not include material from the optional group (unless it was also covered in class), but they are interesting and/or important articles that a user-interface-software-expert should be familiar with.


The grades will be based on:
Benchmark task description and presentation 5%
UI Examples Presentation 5%
4 Implementation Homeworks (14% each) 56%
Participation In Class 4%
MidTerm 10%
Final Exam 20%


As a graduate course, I hope that you will help determine which topics are covered and at what depth.  I have prepared a preliminary schedule but we can add and remove topics.

In-class presentations

All class members will be giving a number of in-class presentations.  In particular, each class member will be presenting their benchmarks in class, and discussing each of their implementations throughout the term.


Extra copies of the readings, homework assignments and other handouts will be available in the bins outside my office.  The lecture notes will be available on the web the day before the lecture, linked from the course's schedule page, and will not be handed out in class--you can make a hardcopy if you want.


There will be material covered in class that is not available in the readings, so attendance at all lectures is highly recommended.


All homework must be typed. No handwritten assignments please.

Homework 1: Create a Benchmark Description

Missed Tests

Make up tests will not ordinarily be given. If you know you are going to have to miss a test for valid reasons, discuss it with me and you can take the test early. If you miss a test due to a medical emergency, you must notify me or my secretary before the exam.


It is the policy of this class not to give incompletes.  All of the assignments end with an in-class presentation of your work, so you will need to have each one finished on time.  Note that the course load is designed to be quite uniform during the term, since there is no big project at the end.

Programming Environments

You will be implementing a benchmark program four times using four different user interface tool.  The first one will be a "prototyping tool," such as:

Next, you will implement the benchmark in two other toolkits of your choice.  Options include:

The final (fourth) implementation of the benchmark will be using my Amulet toolkit.  Amulet includes many innovations designed to make most types of interfaces significantly easier.

The goal is that everyone will have a good understanding of different toolkits and their strenghts and weaknesses.  Another goal is to develop and test a set of benchmark tasks to see if they can reveal any interesting information about the toolkits.