This is an old version of the class. Please see the 2020 version instead.

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


Overview:

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

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

Limited to 28 students.

Instructor: Brad Myers

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

Office hours: To Be Determined

TA: None

Course Web Page:

Schedule and Readings

Homeworks

Class Piazza Page


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 (Javascript) UI frameworks, Service-Oriented Architecture (SOA) and other component frameworks, APIs for UI development such as Xcode for Apple products, Microsoft'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.


Why Study This?

A significant percentage 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 - for example, new libraries for Javascript seem to pop up every week. 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'13Spring'09, Fall'04, and Spring'03, so it is on approximately a 4-year cycle.)


Prerequisites

This is primarily a MS and PhD level course but some advanced undergrads may be admitted with permission of the instructor. Prerequisites are an advanced programming class and considerable programming experience. Experience with object-oriented programming and/or software engineering is strongly recommended. 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 various platforms, which you might find useful for future projects.


Evaluation Comments from last time this course was offered (2013)

I really enjoyed this course, it was one of the more useful courses I'd ever taken.

This was an excellent class. It is a shame it is not offered more often.

I can tell the coding assignments are carefully designed so that students can deeply understand how the user interface software toolkits work behind the scenes. Fortunately, the course material was very closely related to my current research project, and I could apply many ideas into my research tool that I am developing.

I learned a lot from this course. The course was mostly centered around assignments, and required about 200 hrs of coding time (at least for me). The classes were fun, but the best part was the actual design and implementation of the UI concepts -- which was definitely not easy. Although, this was a real hectic semester for me, but I am happy that I took this course.

I really enjoyed the course and felt like I learned a lot. I liked the programming assignments, getting to implement relatively large systems and further building upon them is pretty fun.

An excellent class. Professor Myers is a clear lecturer and takes the time to help students. The programming assignments were challenging but rewarding.

The homework assignments were very interesting and challenging. Overall the course was very useful; I learnt a lot. Professor was very helpful and supportive in clearing doubts in assignments.

This course is very interesting and useful. The homeworks are so fun! And the instructor is very nice. I'll definitely recommend this course to others.


Readings

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)

Articles

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.


Attendance

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