Programming Usable Interfaces

Course Number: 
05-430 / 05-630
Semester and Units: 
Fall: 15 units
Course Description: 

PUI (15-credit, combined lecture and lab)

"This is a lecture course, that involves an intensive programming lab and design studio. This course is intended for those who want to express their interactive ideas in working prototypes. On the lecture side, we will cover the importance of human-computer interaction and interface design, the iterative design cycle used in HCI, an overview of input and output techniques, how to design and evaluate interaction techniques, and end with a discussion of hot topics in research that will impact user interfaces in the coming years. On the lab/studio side, students will learn how to use 1 or more programming languages for building user interfaces, how to design and implement effective graphical prototypes and user interfaces, and how to perform user tests. We will cover a number of prototyping tools and require prototypes to be constructed in each, ranging from animated mock-ups to fully functional programs. The course will also cover usability testing of interactive prototypes. Assignments will require implementing UIs, testing that interface with users, and then modifying the interface based on your findings. Some class sessions will feature design reviews where students present their findings and modifications based on user tests.    

This course is for HCII Masters students with a minimal programming background, and for HCI undergrads who have had an introductory programming course. Students taking this course will often not be professional programmers, but will probably need to interact with programmers, and need to:    

  • Learn to express themselves in executable form    
  • Learn the basics of what is hard and easy to rapidly prototype    
  • Learn the basic terminology and approaches used by programmers    
  • Experience the frustration and joy of programming a working prototype    
  • Design and conduct informal user tests    

PREREQUISITES:  Proficiency in a programming language, program structure, algorithm analysis, and data abstraction. Normally met through an introductory programming course using C, C++, Pascal or Java, such as 15100, 15112, 15127 or equivalent. Pragmatically, students entering this course should be able to independently and successfully write a 300-line program in a 48 hour period.

WAITLIST LOGISTICS: Note that ALL undergrad students who register for this class will initially be placed on a waitlist. Your position on the waitlist is not an indication of whether you will be accepted into the class. Contacting the instructor will not move you off the waitlist. Priority for getting off the waitlist are MHCI students and senior BHCI students first, and then others.

Jason Hong