CS 349: User Interfaces

SE 382: Human Computer Interaction (User Interfaces)


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 wiki: http://crackle.cs.uwaterloo.ca/cs349-09/


Professor Michael Terry (mterry@cs.uwaterloo.ca)
Office: DC 2118
Office hours: Mondays, 4:00-4:30PM (look for me in the HCI Lab (DC3591) or my office on Mondays), and Wednesdays, 2:30-3:30PM

Ryan Stedman (rstedman@cs.uwaterloo.ca), HCI Lab (DC 3591), T/R, 1:30-2:30
Janna-Lynn Weber, DC 3517, M/W, 3:30-4:30
Richard Fung (rhfung@cs.uwaterloo.ca), HCI Lab (DC 3591), M 1:30-2:30, W 3:30-4:30

Meeting Time and Location

CS 349
MWF 12:30-1:20PM, MC 2035

SE 382
MWF 1:30-2:20PM, MC 2038

Primary 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.

There are no make-ups for the midterm or alternative dates/times. If you have a valid excuse for missing the midterm, your final will be weighted to count for both the midterm and final.

Your mark will be determined based on these weights:

You must show sufficient mastery of the material to pass this course. What this means in practice is that if you fail any component of the course (assignments or exams), this is grounds for failing the course.

Update (February 8, 2009): A number have asked about the specific weightings of each assignment. Typically, we assign equal weights to the assignments. However, because we are using a VM for the first time in this course, we will weight the lowest assignment mark less than the other assignment marks. The lowest mark will not be dropped, it will instead contribute less to your overall mark. Specifically, its individual weight will be 2/3, compared to 100% for the other assignments.

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 5

Introduction + Overview


January 7

X lib, drawing and handling basic events in X

X Windows

Olsen, Chapter 1

pages 79-86 of X Window System

January 9

More on X


Olsen, Chapter 2





January 12


Events, part 1


Olsen, Chapter 3

January 14


Events, part 2 (.NET)




Olsen, Chapter 4

January 16

Interactive components

Designing Components





January 19




Wikipedia entry on MVC

January 21

UI design patterns

Design patterns


January 23








January 26



History video: Part 1, Part 2

Assignment 1 due

Olsen, Chapter 6


January 28

Graphic output devices, graphic output abstractions


Graphic output

Olsen, Chapter 7

January 30

Input devices

Input devices





February 2




February 4

Custom components

Custom Components

February 6







February 9

?? Mystery Lecture ??

Catch Up

Assignment 2 due

Olsen, Chapter 5

February 11

Visual design


Olsen, Chapter 8

February 11, 7-8:30PM

SE: MC4020,
CS: MC4021,
Overflow for both: MC4058

Make-up: 5-6:30PM
Location: MC 2036A


February 13

Models of interaction

Visual Design


February 16 Reading Week    





February 23


Actual: Visual Design


February 25

Drag and drop and the clipboard



Required readings:

February 27

Timers, threading, and handling long tasks

Interaction and interaction guidelines

Long Tasks

Interaction Guidelines






March 2

Design process

Models of Interaction


March 4



March 6

Specifying interaction

Specifying Interaction

Olsen, Chapter 11





March 9

Production systems

Production Systems

Assignment 3 due

March 11

Production systems


Olsen, Chapter 15

March 13

2D graphics, affine transforms, and scene graphs


Olsen, Chapters 12, 13, 14





March 16

Affine transforms and scene graphs


Scene graph demo code


March 18



Olsen, Chapter 10

March 20




Olsen, Chapter 9





March 23



March 25



March 27

Bias in UI Design


Assignment 4 due





March 30

Topic TBA (Potentially Application Interoperability)


April 1

Topic TBA



April 3

Topic TBA


Assignment 5 due

April 8 Final Exam! 9 -11:30AM, PAC 7,8 (both CS and SE)      

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. All members of the UW community are expected to hold to the highest standard of academic integrity in their studies, teaching, and research. The Office of Academic Integrity's website (www.uwaterloo.ca/academicintegrity) contains detailed information on UW policy for students and faculty. This site explains why academic integrity is important and how students can avoid academic misconduct. It also identifies resources available on campus for students and faculty to help achieve academic integrity in — and out — of the classroom.

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, http://www.adm.uwaterloo.ca/infosec/Policies/policy70.htm

Discipline: A student is expected to know what constitutes academic integrity, to avoid committing academic offenses, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offense, or who needs help in learning how to avoid offenses (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course professor, academic advisor, or the Undergraduate Associate Dean. When misconduct has been found to have occurred, disciplinary penalties will be imposed under Policy 71 – Student Discipline. For information on categories of offenses and types of penalties, students should refer to Policy 71 - Student Discipline, http://www.adm.uwaterloo.ca/infosec/Policies/policy71.htm

Avoiding Academic Offenses:  Most students are unaware of the line between acceptable and unacceptable academic behaviour, especially when discussing assignments with classmates and using the work of other students.  For information on commonly misunderstood academic offenses and how to avoid them, students should refer to the Faculty of Mathematics Cheating and Student Academic Discipline Policy, http://www.math.uwaterloo.ca/navigation/Current/cheating_policy.shtml

Appeals: A student may appeal the finding and/or penalty in a decision made under Policy 70 - Student Petitions and Grievances (other than regarding a petition) or Policy 71 - Student Discipline if a ground for an appeal can be established. Read Policy 72 - Student Appeals, http://www.adm.uwaterloo.ca/infosec/Policies/policy72.htm