Our faculty members regularly offer both undergrad and grad courses related to HCI. A selection of these courses are described below, along with a list of terms that they have been offered.
CS349 / SE382 – User Interfaces
This course teaches the principles of how user interfaces are implemented. Some attention is paid to issues of design and usability, but CS489, HCI, provides more complete treatment of these topics.More specifically, this course provides an introduction to contemporary user interfaces, including the basics of human-computer interaction, the user interface design/evaluation process, and the architectures within which user interfaces are developed. Students implement and evaluate portions of typical user interfaces in a series of programming assignments.
- Fall 2016
- Spring 2016
- Winter 2016
- Fall 2015
- Spring 2015
- Winter 2015
- Fall 2014
- Spring 2014
- Winter 2014
- Fall 2013
- Winter 2012
- Winter 2011
- Winter 2010
- Winter 2009
- Winter 2008
CS449 – Human Computer Interaction
The course is project-focused, and lecture material, group assignments, individual assignments, and exams are all designed to complement your project. The purpose of the course is to encourage you to think about the design of computer programs in a new way, and to engage in a design process that allows you to internalize a set of practices that have been shown effective in software design.
- Spring 2016
- Spring 2014
- Spring 2013
- Spring 2012
- Fall 2009
- Winter 2009
- Fall 2009
- Fall 2008
- Fall 2007
- Fall 2006
CS889 – Human-in-the-Loop Systems
This graduate course gives a broad overview of various models for combining human and machine intelligence to solve computational problems. Through weekly seminars and a class project, we will examine three roles that humans play in computational systems -- humans as computers, humans as teachers, and humans as collaborators. This research-focused course covers literature from a variety of research areas, and includes topics such as human computation and crowdsourcing, learning by demonstration, mixed initiative systems, active learning from human teachers, interactive machine learning, human-in-the-loop security, etc.
CS889 – Experimental Methods in HCI
This is a topics course in Human-Computer Interaction. As is typical of topics courses at Waterloo, this course involves a mix of professor-lead and student-lead classes. For the first 2 - 3 weeks of the semester, the professor will present an overview of experimental methods in HCI. For the rest of the semester, the students will present selected papers, drawn, for the most part, from the most recent ACM SIGCHI Conference Proceedings.
CS889 – Applied Computer Vision for Human-Computer Interaction
This special topics graduate course examines human-computer interaction (HCI) research that applies computer vision. For the purpose of this course, computer vision is defined as algorithms to acquire, process, and analyse images or video to establish some level of understanding to control a computer or interpret information. HCI research topics focus on input and interaction techniques, but we will also cover other applications like interactive design tools and analysis of HCI experiments. Weekly student-led research seminars and computer vision programming assignments using OpenCV will prepare students with the theoretical and practical background for a final project.
CS889 – Advanced Interaction Design
Recent technological advances have brought computing off of our desktops, onto our laps, and into our pockets. Many predict this trend will continue with digital data becoming embedded throughout our environment. What may not be obvious at first is that this technological transformation is reliant on a parallel transformation of human-computer interaction. For instance, without advanced interaction techniques designed for touch screen displays, we could not benefit from the advanced technology in smart phones and tablets.
To harness the capabilities of new computing form factors, many interaction designers are using algorithms from research areas like machine learning, signal processing, computer vision, numerical optimization, computer graphics, and physics simulation. This has been made possible by the proliferation of accessible, documented, and robust libraries of algorithms from these research areas. With these tools in hand, interaction designers can even go beyond creating techniques for existing hardware, and invent their own using devices like Infrared Cameras, the Microsoft Kinect, and Arduino microprocessors.
However, using a novel combination of advanced algorithms and/or hardware is not a recipe for success: advanced interaction techniques must deliver a measurable improvement over existing methods or enable new interaction possibilities. This course will use a mixture of lectures, student led seminars, and a substantial course project to equip students with the theoretical foundation and practical experience for designing successful advanced interaction techniques.
CS889 – Open Source Usability
Over the past two decades, free/open source software (FOSS) has made a dramatic impact on computing and, more broadly, society at large. While FOSS means many things to many people, there is one, single, unifying factor: It is, at its core, software released under a license that enables individuals to freely modify and redistribute that software. This seemingly simple, innocuous attribute has led to multifaceted sociocultural, political movements; new business models (often at the cost of disrupting existing business models); an outpouring of software; new computing ethoses; new ways of interacting with computers; and clear changes to academic, teaching, research, and government institutions.
Much of the past and current research on FOSS has examined the phenomena through the lens of software development, particularly by volunteers. However, as this software is increasingly used by more "average" computer users, it is critical to consider end-user concerns: The overall usability of the software, how usability issues are perceived and addressed by FOSS developers, current practices and needs related to FOSS usability, and so on. This course will examine these latter issues in depth.