CS 349: User Interfaces

SE 382: Human Computer Interaction (User Interfaces)

Term and Year of Offering: Winter 2010

Course Number and Title: CS349, User Interfaces, SE382, Human Computer Interaction


Professor Michael Terry (mterry@cs.uwaterloo.ca)
Office: DC 2118
Office hours: Wednesdays, 2:30-3:30 in DC 2118

Eugene Greene (eugene.d.greene@gmail.com): Fridays, 1:30-3:30 (DC 2303)
Matthew Kay (matthew.kay@gmail.com): Wednesdays, Thursdays, 2:30-3:30 in DC 3591 (HCI Lab)
Ben Lafreniere (bjlafren@cs.uwaterloo.ca): Mondays 3-4:00PM, Wednesdays 10:30-11:30 in DC 3591 (HCI Lab)
Adam Fourney (afourney@cs.uwaterloo.ca): Tuesdays, Thursdays, 9:30-10:30 in DC 3591 (HCI Lab)

Meeting Time and Location
SE 382
MWF 11:30-12:20PM, RCH 307

CS 349
MWF 12:30-1:20PM, RCH 309

Course Description

This course teaches the principles of constructing user interfaces. In this course you will learn how to actually implement user interfaces. Some attention is paid to issues of design and usability, but CS 489, HCI, provides more complete treatment of these topics.

Course Objectives

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.

Course Overview

Required Text

Supplementary Text

Class, Assignments, and Exams

Lecture notes are generally made available on the course website before class.

There will be 4-5 assignments. The assignments involve large amounts of programming and require significant time to complete. A common mistake people make in this course is to underestimate the time required to create a truly interactive application: Interactive applications are complex and require developers and designers to attend to numerous details before the application can be easy-to-use, intuitive, and useful. However, if done well, you will construct applications that others will find entertaining and enjoyable to use.

All posted assignments should be considered drafts until two weeks prior to the due date, at which time the requirements will be fixed (though clarifications may occur within these last two weeks). Any revisions will be announced in class and the assignment web page will be annotated with the changes. That said, any additions/revisions to assignment drafts are generally minor in nature, so you should start working on the assignment as soon as it is posted.

Unless otherwise specified, all assignments are individual assignments. You are expected to do your own work. If you use code from a third party (such as code examples from the web, but not code from another student in the course, past or present), you must properly attribute this use in your code. While it is expected that you will incorporate and modify code from external sources, it is expected that such code reuse will constitute a significantly small portion of your final code. If there are any doubts, contact the prof. We reserve the right to check your code against others' code and previous terms' assignments to detect instances of cheating.

We typically supply code to assist you with the assignments. The code is provided with the following caveats:

Absolutely no late assignments will be accepted. You may not email the prof or TAs with your assignments; they will be discarded. There are no exceptions to this rule. If the deadline is approaching, it is highly advised you submit a version just to insure you have something submitted.

Your mark will be determined based on these weights:

Marked assignments may be retrieved from the professor after class or during his office hours.

Course Resources

The course resource page will be of help to you when doing assignments.


The following is a tentative syllabus. Specific lecture topics may vary.



Lecture Slides


January 4

Introduction + Overview


January 6

X lib, drawing and handling basic events in X

X Windows


Olsen, Chapter 1

pages 79-86 of X Window System

January 8

More on X


Olsen, Chapter 2





January 11


Events, part 1


Olsen, Chapter 3

January 13


Events, part 2 (.NET)




Olsen, Chapter 4

January 15

Interactive components

Designing Components





January 18





Assignment 1 due

Wikipedia entry on MVC

January 20

UI design patterns

Guest lecturer: Adam Fourney

Design patterns


January 21








January 25



History video: Part 1, Part 2

Olsen, Chapter 6


January 27

Graphic output devices, graphic output abstractions


Graphic output

Olsen, Chapter 7

January 29

Input devices

Input devices





February 1





February 3

Custom components

Custom Components


February 5







February 8

?? Mystery Lecture ??

Visual Design

Assignment 2 due

Olsen, Chapter 5

February 10

Visual design

Models of interaction

Olsen, Chapter 8

February 10, 5-6:30PM

Note change!

MC 2066 (SE), MC 4061(CS)


February 12

Models of interaction



February 15 Reading Week    





February 22


Guest lecturer: Matt Kay



February 24

Drag and drop and the clipboard

Guest lecturer: Ben Lafreniere



Required readings:

February 26

Timers, threading, and handling long tasks


Guest lecturer: Adam Fourney

Long Tasks







March 1

Interaction and interaction guidelines

Models of Interaction

Assignment 3 due at 5PM

March 3



March 5

Specifying interaction

Specifying Interaction

Olsen, Chapter 11





March 8

Production systems

Production Systems

March 10

Production systems


Olsen, Chapter 15

March 12

2D graphics, affine transforms, and scene graphs


Olsen, Chapters 12, 13, 14





March 15

Affine transforms and scene graphs



Scene graph demo code (coming as part of A5)



March 17



Olsen, Chapter 10

March 19




Olsen, Chapter 9






March 22



Assignment 4 due, 5PM

March 24

Bias in UI Design


March 26

Class canceled due to SE design symposium






March 29

Class canceled


March 31

UI/HCI research at Waterloo



April 2

No class -- holiday


April 5 Areas of HCI research

Last lecture (from '09)
Assignment 5 due

April 15, 4PM - 6:30PM

RCH 301 (SE)

RCH 302 (CS)

Final Exam    

Important notes about being a student here at Waterloo...

Academic Integrity: In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check www.uwaterloo.ca/academicintegrity/ for more information.]

Grievance: A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4, www.adm.uwaterloo.ca/infosec/Policies/policy70.htm. When in doubt please be certain to contact the department's administrative assistant who will provide further assistance.

Discipline: A student is expected to know what constitutes academic integrity [check www.uwaterloo.ca/academicintegrity/] to avoid committing an academic offence, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about 'rules' for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline, www.adm.uwaterloo.ca/infosec/Policies/policy71.htm. For typical penalties check Guidelines for the Assessment of Penalties, www.adm.uwaterloo.ca/infosec/guidelines/penaltyguidelines.htm.

Appeals: A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground. A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals) www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.

Note for Students with Disabilities: The Office for persons with Disabilities (OPD), located in Needles Hall, Room 1132, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with the OPD at the beginning of each academic term.

Notice on student absences due to the H1N1 influenza virus

Students seeking accommodations from a course instructor for missed course requirements due to an "influenza-like illness" (including the H1N1 virus) must declare their absences through Quest. Specific instructions on how to declare such absences may be found on the following web page:

Note that a declaration of absence must be made by the second calendar day after the absence began, and that the form referred to by the above web page is only intended for an online declaration of absences due to an "influenza-like illness".

For absences due to other illnesses, as well as absences due to influenza-related illnesses lasting longer than 10 days, the standard Verification of Illness form should be used. A link to this form is available on the following web page:

General information concerning University policies on illnesses may be found at