Six HCI Core Courses
All students are required to take the following 6 core courses (05-600, 05-610, 05-650, 05-630, 05-631 and 05-633):
05-600 HCI Pro Seminar
Students will attend the HCII Seminar Series with talks by leaders in the field of Human-Computer Interaction, then meet to discuss these topics.
05-610 User-Centered Research and Evaluation
This course provides an overview and introduction to the field of human-computer interaction. It introduces students to tools, techniques, and sources of information about HCI and provides a systematic approach to design. The course increases awareness of good and bad design through observation of existing technology, and teaches the basic skills of task analysis, and analytic and empirical evaluation methods. Graduate students will also participate in a laboratory where they will practice HCI techniques in an independent, self-defined project.
05-650 Interaction Design Studio
Designers give form to products, to communication, to services, and to environments. Interaction designers give form to the behavior of products and services. Their expertise is in conceiving of a world of actions, and they work with narrative to help them explore and refine what behaviors can and should be. In this course we will approach interaction design from the perspective of user-centered design. Students will follow a three-step design process:
- Exploratory Phase: Investigate the needs of a target set of users and relevant stakeholders. Synthesize findings to produce a set of design insights, implications, and opportunities.
- Generative Phase: Investigate the solution space by ideating many possible preferred futures working with the narrative as a design material. Reframe the problem you are trying to solve with each new idea.
- Refinement Phase: Select the best problem framing and systematically refine the concept into a detailed design. Prepare design for transfer to next stakeholder in the product development process.
05-630 Programming Usable Interfaces (PUI)*
This course is for those with moderate programming skills who want to learn how to express their interactive ideas in working prototypes. This course will enable you to better communicate with programmers, covering information about how to design and implement good user interfaces, how to evaluate user interfaces, how user interface systems work and integrate with operating systems. 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.
Prerequisites: proficiency in a programming language such as C or Java, programming methodology and style, problem analysis, program structure, algorithm analysis, data abstraction, and dynamic data, normally met through an introductory course in programming C, C++, or Java. Pragmatically, students entering this course should be able to independently and successfully write a 300-line program in a 48 hour period.
As a co-requisite lab course, you must take 05433/05633A (Level 1 PUI Prototype Lab) or 05433/05633B (Level 2 PUI GUI Lab).
05-631 Software Architectures for User Interfaces (SSUI)*
This course considers the basic and detailed concepts that go into building software to implement user interfaces. It considers factors of input, output, application interface, and related infrastructure as well as the typical patterns used to implement them. It will also consider how these components are organized and managed within a well-structured object oriented system. After considering these fundamental concepts in the first portion of the class, the later part will consider advanced topics related to emerging future concepts in user interface design. This course is intended for HCII Master, BHCI dual majors and others who wish to understand the structures needed for professional development of interactive systems.
As a co-requisite lab course, you must take one section of 05433/05633 (section A: "User Interface Lab Level 1 PUI Prototyping", section B: "User Interface Lab Level 2: GUI", section C: "User Interface Lab Level 3: Mobile", or D: "User Interface Lab Level 3: Web").
05-633 User Interface Lab (taken concurrently with 05-630/05-631)
05-633A (Level 1: PUI Prototyping Lab) This course is a lab complement to 05-630 that focuses on prototyping. In this lab, several prototyping tools and processes will be covered, from paper prototyping to visual mockups to fully functional prototypes. Prototypes will be built using each of these, with a particular focus on iterative design, implementation and evaluation. Assignments will require implementing UIs, testing that interface with users, and then modifying the interface based on your findings. 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 yourself in an 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 such as C or Java, programming methodology and style, problem analysis, program structure and data abstraction, normally met through an introductory course in programming C, C++, or Java. Pragmatically, students entering this course should be able to independently and successfully write a 300-line program in a 48 hour period.
05-633B (Level 2: GUI Lab)
This course is a lab complement to 05-630 that focuses on practice in the skills needed for prototyping and development of simple graphical user interfaces. In this lab rapid development tools such as graphical user interface layout editors will be combined with simple code to create functioning interfaces for a range of practical applications. This course is for HCII Masters, BHCI dual majors, and others with basic programming skills, rather than necessarily a strong programming or Computer Science background.
05-633C (Level 3: Mobile Lab)
This course is a lab complement to 05-631 that focuses on mobile phone user interface and application development. In this lab, mobile phone development environments and phone user interface builders will be covered (e.g., Android Development Kit). Prototypes will be built using these tools, and experience will be gained with implementation mobile phone interfaces and applications. The course is intended for computer science majors (and those taking 05431/05631).
05-633D (Level 3: Web Lab)
This course is a lab complement to 05-631 that focuses on practice in the skills needed for development of user interfaces to be deployed on the World Wide Web. In this lab, tools for both the "front end" (browser-side interfaces) and the "back-end" (supporting server-side code) will be considered. However, the emphasis will be placed on user interface concepts and components. This course is intended for HCII Masters, BHCI dual majors, and others with strong programming skills (e.g., for Computer Science majors.)
*The student and the Program Director will jointly determine the choice of 05-630 or 05-631 and accompanying lab level, based upon the student’s previous programming experience.
05-671 HCI Project I (15-unit spring course) and 05-672 HCI Project II (48-unit summer course)
Experiential learning is key component of the MHCI program. Through a substantial team project, students apply classroom knowledge in analysis and evaluation, implementation and design, and develop skills working in multidisciplinary teams. The project begins in the spring semester before graduation and continues full-time through the final summer semester; it must be taken in consecutive spring and summer semesters. The course number for spring is 05-671 and for summer 05-672.