05-630 / 05-430, Programming Usable Interfaces, Spring, 2004

Number: 05-630 / 05-430 (offered by the Human Computer Interaction Institute)
Time: Tue/Thu 3:00-4:20
Room: NSH 1305
12 University Units

Enrollment limited to HCI MS and BS majors.

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: Sue O'Connor
NSH 3526A

Andrew Ko <ajko@cmu.edu>, web page
office hours: Monday 2-4 pm, NSH 2502 (knock if locked), or by appointment. AIM name endko

Donna Malayeri <donna+@cs.cmu.edu>, web page
office hour: Thursday, 4:30-5:30 in Wean 4114, or by appointment

The TAs have also agreed to be in the Wean 5202 cluster to help with programming questions on Tuesdays, 4:30-6:30, and Wednesdays 3:00-5:00, at least for the first four weeks of class.

Course Web Page:

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

Course Schedule and Reading and Homework Assignments

Course Mailing Lists and Discussion Group:

Need Something?

If you need to borrow the .NET installation disks, Andy will be at his desk in NSH 2502, Friday, January 15th, from 8-5 pm. You can e-mail him any other day, or attend his office hours on Monday from 2-4 pm.

All other resources (besides the books and readings on the schedule page), are listed on the resources page.

Andy's Task Design slides, from February 26th, 2004, in PowerPoint and pdf.

Course Description:

This course is a combination programming course and design studio, and is for those who want to express their interactive ideas in working prototypes.  Students will learn how to use programming languages, how to design and implement effective GUI interfaces, and how to perform rapid, effective iterative user tests. The course will cover several prototyping tools and require a number of prototypes to be constructed in each. These will range from animated mock-ups through fully functional programs. The course will also cover usability testing of interactive prototypes. This course is intended for HCII Masters students who come to CMU with a minimal, but competent programming background. It is also appropriate for CMU HCI undergraduate "second majors" in HCII who have had an introductory programming course. Because this course has a design studio component, class attendance is mandatory.

The course is project-based; the assignments all require implementing an interface in a prototyping system, iteratively testing that interface with real users, and then modifying the interface based on what you find. Some class sessions will be design reviews where students present their findings/modifications based on the user testing data. The students taking this course will often not be professional programmers, but will probably need to interact with programmers, and need to:


Proficiency in a programming language such as C, programming methodology and style, problem analysis, program structure, algorithm analysis, data abstraction, and dynamic data. Normally met through an introductory course in programming in C, C++, Pascal or JAVA, such as: 15100 or 15112 or 15127 or equivalent.

Pragmatically, the requirement can be defined as “can successfully write a 300 line program in a 48 hour period.”  If you cannot complete the first assignment on time, I take that as evidence that you do not have adequate pre-requisites for the course.

Required texts

There are two required textbooks for this course:

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 edition: Basic Books, 2002, ISDN 0-465-06710-7. Or original edition (paperback): New York: Doubleday, 1988. ISBN 0-385-26774-6

If the bookstore does not have them in stock, you can order them from www.bn.com or www.amazon.com. Get them today; your reading assignments are already posted in the schedule. For the programming environments we will use, such as Visual Basic, I encourage you to visit any bookstore you like, and find appropriate texts if you feel you need them.  There are also online resources available for both. As students in the class find good resources, I expect them to inform me so I can share those resources with the class.


Unfortunately, there is no text that covers the some of the material in the course, so there will be some assigned readings. In order to prioritize your work, I have marked all readings as "required" or "optional." There may be in-class "pop" quizzes on some of the readings (including the text book readings), and it will be fair game for inclusion on the midterm and final exams.

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 expert should be familiar with.


This course will be project oriented. All work is to be performed individually. You will not only implement projects, but we will review and discuss them in class (in this respect, the course will be taught somewhat as a design studio). Grades will be based on:

In-Class quizzes and
in-class participation
Assignment 15%  
Assignment 2 5% 
Assignment 310%  
Assignment 415%  
Assignment 510%  
Assignment 65%  
Assignment 715%  
All Assignments  65%
MidTerm 10%
Final Exam 20%
TOTAL 100%


There will be material covered in class that is not available in the readings, and there will be unannounced in-class quizzes, so attendance at all lectures is required.


All homework must be typed. No handwritten assignments please.

Late Policy

Homework is due before class on the assigned day. Starting immediately at 3:00pm, a full grade will be deducted, followed by another full grade for each class period late.

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.