05-830, Advanced User Interface Software,
Spring, 2009

This is the OLD version of the course -- please see the Spring, 2013 version

Number: 05-830 (offered by the Human Computer Interaction Institute)
Time: TBD, probably WF 1:30PM - 02:50PM
(let me know if you would like to take it and have constraints on when it should be)
Room: TBD
12 University Units
Available for CS and HCII PhD credit and MS credit for INI, MSE and HCII Master's
Undergraduates require permission of the instructor

Enrollment limited to 20 students.

Instructor: Brad Myers

Office: Newell-Simon Hall (NSH) 3517
Phone: x8-5150
E-mail: bam@cs.cmu.edu
Office hours: By appointment, or just drop by and see if I'm in.
Secretary: Brandy Renduels
    NSH 3502, 412-268-7099
TA: None

Course Web Page:

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

The Hub's page for 05-830.

This course is also on Blackboard.




This course will cover the research and implementation of user interface software. The students will get a comprehensive understanding of all the approaches that have been investigated by researchers and commercial systems for user interface software. This will be of value to people planning to be user interface researchers or implementers, or people interested in learning how to provide user interface frameworks for others. 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 frameworks, SDKs, toolkits, windowing systems, interface builders, prototypers, and advanced user interface development environments. In particular, the course will cover Internet UI frameworks, Service-Oriented Architecture (SOA) and other component frameworks, APIs for UI development such as MFC and Java Swing, interactive tools such as Visual Basic .Net and Adobe Flash, 2-D and 3-D graphics models for UIs, and various research systems like Amulet, subArctic, the Context Toolkit, and Papier Mache. 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. Other topics will include designing an API so it is usable by the target programmers, and how to evaluate user interface tools and frameworks. Today's research topics and open issues in user interface software will be emphasized throughout.

This is primarily a MS and PhD level course but some advanced undergrads may be admitted with permission of the instructor. Students are expected to have taken or be taking other HCI courses. Prerequisites are 15-212 or equivalent and considerable programming experience. Experience with object-oriented programming and/or software engineering is desirable. Prior experience with user interface design is not required. Homeworks will involve extensive programming in Java. By the end of the course, you will have built your own UI framework, with constraint solving, a retained graphics model, and an innovative input handling mechanism.

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.

Evaluation Comments

From Fall 2004:

I can happily vouch for this course. I still use a lot of what I learned in it when Iím developing GUIs and the programming assignments were actually useful, which is unfortunately rare.... Iíve been very happy with the course. I used a lot of the ideas when I was creating electronic whiteboards in 3rd and 4th year, and Iíve applied some of the topics (like constraints) outside pure UIs.
    -- Uri Dekel, ISR PhD Student

From Spring, 2009, from the official anonymous course evaluations:

The course was excellent overall. Most lectures were very interesting and the assignments were great....

I loved this class. There was a good blend of lecture, homework, and student-generated content. I appreciate that the class was harder than the average HCI student could handle. I learned a lot from working with top-tier programmers.

I really liked that course. I learned a lot and think that I will be able to use what I learned later. Especially the assignment contributed a lot to my learning, even though they were not easy - but that's perfectly ok.... The lectures were good too, they gave the background knowledge necessary for the assignments....


15-212 and 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

None. If you have no prior HCI course, you SHOULD buy the Nielsen Usability Engineering book (referenced as "Nielsen Text" in the schedule)


Unfortunately, there is no text that covers the bulk of the course, so there will be extensive readings assigned, as listed on the schedule. 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.


Individual components of the grading will be weighted approximately as follows (this is tentative and subject to change): 

Assignment Percent of Final Grade
Homework 1 10%
Homework 2 18%
Homework 3 18%
Homework 4 18%
Homework 5 18%
In-Class Presentation 18%


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.


It is the policy of this class not to give incompletes.  Note that the course load is designed to be relatively uniform during the term, since there is no big project at the end.

Late Policy

Homeworks are due in class on the assigned day. After 5pm on that day, one letter grade (e.g. 10 points out of 100) will be deducted. An additional full letter grade will be deducted for each class period late.