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

Also known to M-HCI students as "Super SAUI"

Number: 05-830 (offered by the Human Computer Interaction Institute)
Time:
Tuesdays & Thursdays, 1:30 - 2:50
Room: GHC 4102
12 University Units
Available for PhD credit and MS credit for INI, MSE and HCII Master's
Undergraduates require permission of the instructor

Enrollment limited to 32 students.

Instructor: Brad Myers

Office: Newell-Simon Hall (NSH) 3517
Phone: x8-5150
E-mail: bam@cs.cmu.edu

Office hours:

TA: None

Course Web Page:

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

The Hub's page for 05-830.

The Piazza page for this course, containing discussions about the homeworks: https://piazza.com/class#spring2013/05830


Schedule and Readings

Homeworks

List of topics to be covered


Abstract:

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 tools to help with 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 toolkits for building phone/tablet/ubiquitous/novel user interfaces, Internet UI frameworks, Service-Oriented Architecture (SOA) and other component frameworks, APIs for UI development such as Xcode for Apple products, Micrsosoft's Windows SDKs, Swing and Android toolkits for Java, 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, Context Toolkit, ConstraintJS, 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. See also the list of topics.

This is primarily a MS and PhD level course but some advanced undergrads may be admitted with permission of the instructor. 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, probably in Java. By the end of the course, you will have built your own modern UI framework for building applications on desktops, smartphones, tablets, embedded devices (e.g., for Arduino) and/or the web, which you might find useful for future projects.


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. Our research shows that a poorly designed API can impact programmer performance by significant amounts, and poorly designed UI tools can be a waste of both the user's and vendor's time. Therefore, it is vital for CS-oriented user interface specialists and software engineers in general to be familiar with the appropriate design of user interface software.

Note that this course is only offered occasionally, so you should definitely take it now! No telling when it will be offered again! (It was previously offered Spring'09, Fall'04, and Spring'03.)


Evaluation Comments

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

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


Prerequisites

15-212 or equivalent and considerable programming experience. Experience with object-oriented programming in Java 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)

Readings

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 material from the optional group are interesting and/or important articles that a user-interface-software-expert should be familiar with.

Grades

Individual components of the grading will be weighted approximately as follows (this is tentative and subject to change). Note that there is no final.

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

Handouts

All readings will be on-line, linked off the schedule. The lecture slides will be available on the web the day before the lecture, linked from the course's schedule page.

Attendance

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

Incompletes

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 just before class. After 1:30pm 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. See the full details on the homeworks page.