CMSC 20300: Introduction to Human Computer Interaction

News & Announcements

Class is done! Well done everyone.

Published by Pedro Lopes on Dec 8 2022

Project 3!
Project 3 is out (individual)
Published by Pedro Lopes on Nov 14 2022

Project 2!
Project 2 is out (team-based and same teams as in project 1).
Published by Pedro Lopes on Nov 1 2022

Tutorial submission
Before starting on project 2, you have submit the individual Unity3D code tutorial
Published by Pedro Lopes on Oct 31 2022

New room for all office hours!
JCL133 (Weston Game Studio, 1st floor of JCL inside the MAAD center)
Published by Pedro Lopes on Oct 18 2022

Make your teams now!
Make your teams and register them in the wiki, so that we can assign you the first project details.
Published by Pedro Lopes on Oct 11 2022

Wiki usernames and password sent!
Please check your inbox (including spam filter) for access to our class wiki! If you experience any difficulties when logging into the class wiki, try the following in this order and try again after every step: (1) clear cache (2) cookies, (3) use an incognito window. Email helpdesk if you are still having problems.
Published by Pedro Lopes on Sep 27 2022

Welcome to Intro to HCI class!
Welcome to our class; this class will happen in person Tuesdays and Thursdays (TR 3:30pm–4:50pm) at Ryerson 251. You will receive info and access to class materials via email.
Published by Pedro Lopes on Aug 26 2022


An introduction to the field of Human-Computer Interaction (HCI), with an emphasis in understanding, designing and programming user-facing software and hardware systems. This class covers the core concepts of HCI: affordances, mental models, selection techniques (pointing, touch, menus, text entry, widgets, etc), conducting user studies (psychophysics, basic statistics, etc), and the fundamentals of 3D interfaces (optics for VR, AR, etc). We compliment the lectures with weekly programming assignments and two larger projects, in which we build/program/test user-facing interactive systems. This class requires you to program assignments in Python, Javascript, and C Sharp (Unity3D, we provide a tutorial for this one), as such, the pre-requisites need to be observed.

Expected workload

In this class you will: solving weekly assignments (mostly programming in python and javascript) and two projects (programming in C-Sharp via Unity3D and conducting user studies).


Please see UChicago's official registrar page.


This course was developed by Pedro Lopes. Parts of this course are derived (with permission) from a course taught by Patrick Baudisch (in which Pedro co-taught a few segments) at Hasso Plattner Institute. All teaching materials in this class, including course slides, homeworks, assignments, practice exams and quizzes, are copyrighted. Reproduction, redistribution and other rights solely belong to the instructor. In particular, it is not permissible to upload any or part of these materials to public or private websites without the instructor's explicit consent. Violating this copyright policy will be considered an academic integrity violation.


The University of Chicago has formal policies related to academic honesty and plagiarism. We abide by these standards in this course. Depending on the severity of the offense, you risk being dismissed altogether from the course. All cases will be referred to the Dean of Students office, which may impose further penalties, including suspension and expulsion. In addition, we expect that everyone handles their fellow students and staff members with respect, following the norms of proper behavior by members of the University of Chicago community.