CS 349: User Interfaces

SE 382: Human Computer Interaction (User Interfaces)

Overview

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/

Instructor

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

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

Syllabus

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

Date

Topic

Lecture Slides

Assignments

January 5

Introduction + Overview

Intro

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

Output

Olsen, Chapter 2

 

 

 

 

January 12

Events

Events, part 1

 

Olsen, Chapter 3

January 14

Events

Events, part 2 (.NET)

ListenerDemo.java

DelegateDemo.cs

EventDemo.cs

Olsen, Chapter 4

January 16

Interactive components

Designing Components

 

 

 

 

January 19

MVC

MVC

MVCDemo.java

Wikipedia entry on MVC

January 21

UI design patterns

Design patterns

LayoutDemo.java

January 23

Layout

Layout

 

 

 

 

 

January 26

History

History

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

Undo

Undo

 

February 4

Custom components

Custom Components

February 6

Users

 

 

 

 

 

February 9

?? Mystery Lecture ??

Catch Up

Assignment 2 due

Olsen, Chapter 5

February 11

Visual design

Users

Olsen, Chapter 8

February 11, 7-8:30PM
Location:

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

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

Midterm    

February 13

Models of interaction

Visual Design

 

       
February 16 Reading Week    

 

 

 

 

February 23

Interaction

Actual: Visual Design

 

February 25

Drag and drop and the clipboard

Clipboard

ClipboardDemo.java

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

Design

March 4

Typography

Typography

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

AffineDemo.java

Scene graph demo code

 

March 18

Internationalization

Internationalization

Olsen, Chapter 10

March 20

Scripting

 

Scripting

Olsen, Chapter 9

 

 

 

 

March 23

Accessibility

Accessibility

March 25

Experimentation

Experimentation

March 27

Bias in UI Design

Bias

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