Human Computer Interaction

Course Introduction

Interactions between computers and humans should be as intuitive as conversations between two humans—and yet many products and services fail to achieve this. So, what do you need to know so as to create an intuitive user experience? Human psychology? Emotional design? Specialized design processes? The answer is, of course, all of the above, and this course will cover them all.This course provides a comprehensive introduction and deep dive into HCI, HCI is an interdisciplinary field that integrates theories and methodologies from computer science, cognitive psychology, design, and many other areas. Course readings will span current theory and practice in interface specification, design and evaluation, as well as current and classic research papers in HCI. Students will work on both individual and team projects to design, implement and evaluate computer interfaces. The course is open to students from all disciplines, providing them with experience working in interdisciplinary design teams.


There are three major components to the course, treated in parallel during the semester. The central focus of the course is a semester-long team project, in which students will design, implement and evaluate a user interface. Teams will be incrementally led through the phases of ethnographic study and requirements analysis, scenario-based design, paper prototyping, computer prototyping, and several methods of usability analysis and evaluation. The second component of the course involves exposure to current research in HCI, in order to provide students with an understanding of the range of issues addressed in the field, to provide them with practice reading, presenting and critiquing HCI research, and to provide ideas for team projects. This component of the course will be implemented in a seminar style, with students presenting and critiquing short HCI research papers each week. The third component of the course involves an introduction to software architectures used in modern graphical user interfaces, including the implementation of a few simple interfaces using the Java Swing toolkit (alternate assignments are available for students with non-technical backgrounds).