05-631 Software Architecture for User Interfaces

Spring, 2001
Time: Tuesday & Thurday, 12noon - 1:20 pm
NSH 1305

Instructor: Brad Myers
Human Computer Interaction Institute

Office: Newell-Simon Hall (NSH) 3601
Phone: x8-5150
E-mail: bam@cs.cmu.edu
WWW: http://www.cs.cmu.edu/~bam
Office hours: By appointment, or just drop by and see if I'm in.
Secretary: Ava Cruse,
NSH 3526A

Course Web Page

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

Schedule and Readings

See the schedule of all lecture material, readings, homeworks and tests.

Course Abstract

This course is designed to introduce students to the basic organizing principles found in interactive software and to provide experience with user interface implementation.


15-127 or equivalent knowledge, and good programming experience in C, C++ or Java. Java will be the programming platform for the course.

Texts and Readings

There is no textbook for the main material of the course. However, you may find it useful to get a book on the Java programming language. Numerous such books are available. Depending on your background and experience learning programming languages, you might want to consider either a tutorial or reference style book. Several books that have been recommended as possible choices include:

David Flanagan, “Java in a Nutshell: A Desktop Quick Reference”, O'Reilly & Associates; 1999, ISBN: 1565924878.
David Flanagan ,”Java Examples in a Nutshell : A Tutorial Companion to Java in a Nutshell” O'Reilly & Associates, 1997, ISBN: 1565923715.
Ken Arnold, James Gosling, and David Holmes, “The Java Programming Language, Third Edition”, Addison-Wesley Pub Co, 2000,ISBN: 0201704331.
Bill Joy, Guy Steele, James Gosling, and Gilad Bracha, “The Java Language Specification, Second Edition”, Addison-Wesley Pub Co, 2000, ISBN: 0201310082.

Each of these is currently available for relatively quick delivery from Amazon.com (http://www.amazon.com) and other on-line book sellers.

There are also good references on-line. Here are some references for Swing and Java graphics.


This course will be project oriented with a set of 4 projects. These projects will begin with a small “warmup” project to insure you know the basics of the Java language and environment, as well as the Swing user interface toolkit that will be used in class. Later projects will be more challenging, with the last being a large full scale interface implementation.


Course projects will count for approximately 55% of the overall course grade, while the midterm and final exams will account for the remaining 45%.Individual components will be weighted as follows (this is tentative and subject to change):
Assignment Percent of Final Grade
Project 1 15%
Project 2 15%
Projcet 3 15%
Project 4 20%
Midterm 20%
Final Exam 25%


For this class you will need to have access to an up to date Java system on some platform. One way to do this is to download the latest version of the system (JDK 1.3, AKA “Java 2 Standard Edition v1.3”) directly from Sun. It is free and can be found at: http://java.sun.com/products/jdk/1.3/. (Note that JDK v1.2 will also work). Extensive on-line documentation from Sun can be found at: http://java.sun.com/products/jdk/1.3/docs/index.html.Of particular interest may be the “JavaDoc” API documentation for all standard classes: http://java.sun.com/products/jdk/1.3/docs/api/index.html

It is recommended that you not attempt to use Microsoft’s implementation of Java (J++).

There are also good references on-line. Here are some references for Swing and Java graphics.