05-830, User Interface Software, Spring, 1998

Number: 05-830 (offered by the Human Computer Interaction Institute)
Time: MW 9-10:20
Room: Wean 3420
1 CS PhD Elective Core Unit Approved
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, or just drop by and see if I'm in.
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/1998spring/


Initial Benchmarks

Class List


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 subArctic. Lectures will discuss the fundamental principles behind all of these systems, while showing the historical progression of the ideas from research prototypes to commercial systems. Today's research topics and open issues in user interface software will be emphasized throughout. Homeworks will primarily consist of each student implementing a small project on at least 4 different user interface tools during the semester, in order to experience first-hand the breadth of techniques used in modern tools. Students will all use an interactive prototyping tool first, like HyperCard, Director, Visual Basic or Delphi. 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. Students will study and use the "usability engineering" development methodology and will compare and evaluate the various tools for ease of learning and effectiveness.

CS PhD students in the class will be expected to learn and to do more exploratory work than the other students taking this course. (Some of what they will learn is covered in other HCI courses.) In particular, they will be asked to refine their specifications and perform iterative design based on user testing of the designs, prototypes, and implementations. They will also help present some of the course material by investigating and lecturing on various toolkits.

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.

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.

The course syllabus and schedule will be similar to last year's. See:

Required text

None. If you have no prior HCI course, you SHOULD buy the Nielsen text below.

Recommended texts

Jakob Nielsen. "Usability Engineering". Boston: Academic Press, Inc. 1993. 0-12-518406-9 (paperback) or ISBN 0-12-518405-0 (hardcover)

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%

PhD students will have an additional 20% of the grade based on the user interface evaluations (and then all of the percentages would obviously be adjusted by 0.83).

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.

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 strengths 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.