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.

The emphasis in this source is the principles of constructing and implementing user interfaces. Some attention is paid to issues of design and usability, but CS 449 provides more complete treatment of these topics.

Recommended Text

There are no required texts for this course; all required material will be presented during lectures. However, the following resources are highly-relevant and may be referenced during lectures:

Building Interactive Systems, 2010, by Dan R. Olsen Jr.

A copy is available on 3-hour loan at the DC library under call number UWD1512.

The Design of Everyday Things, 2013, by Don Norman.

A copy is available on 3-hour loan at the DC library under call number TS171.4 .N67 2013.

Designing with the Mind in Mind: Simple Guide to Understanding User Interface Design Guidelines, 2013, by Jeff Johnson


All announcements, questions, and answers are on Piazza. When you register, please use an identifier that clearly indicates who you are for the purposes of the course. When you post questions, please make them public so that other students can benefit from the dialog!

Staff & Office Hours

(all email addresses are


Instructors are responible for the course as a whole: lectures, setting assignments and exams, developing marking schemes and resolving issues related to the course.

Jeff Avery (j2avery@)
DC 3107
Office Hours: Monday, 2:15 - 3:00 (or by appointment)

Ed Lank (lank@)
DC 3140
Office Hours By Appointment

Instructional Assistant

Instructional assistants are responsible for helping the instructor develop assignments and marking schemes, resolving mark appeals, and delivering tutorials as-needed.

Jingjie (Vincent) Zheng (j49zheng@)
DC 3540
Office Hours: Wednesday, 2:00 - 3:00

Teaching Assistants

Teaching assistants are responsible for marking assignments, marking exams, and holding office hours.

Reza Adhitya Saputra (radhitya@)
DC 2303
Office Hours: Tuesday, 10:00 - 11:00

Terence Dickson (tpdickso@)
DC 3540
Office Hours: Thursday, 10:30 - 11:30

Edmund Liu (qfliu@)
DC 3540
Office Hours: Friday, 3:00 - 4:00

Shaishav Siddhpuria (spsiddhp@)
DC 3540
Office Hours: Monday, 10:00 - 11:00

Alex Williams (a27willi@)
DC 3540
Office Hours: Wednesday, 3:00 - 4:00

Instructional Support Coordinator

The ISC is responsible for long-term support for the course, maintaining the marks spreadsheet, coordinating accomodations (illness, alternate exams, etc), screening for cheating and dealing with the results.

Caroline Kierstead (ctkierst@)
MC 4009


There are four assignments, each worth 10%, a midterm worth 20% (see schedule for date and location), and a final exam worth 40%. Final course grades will be calculated as follows:

 assignments = .10*(A01 + A02 + A03 + A04)/.40
 exams = (.20*Midterm + .40*Final)/.60
 normal = .60 * exams + .40 * assignments
 if assignments < .50 or exams < .50
     grade = min(.47, exams, normal) * 100
     grade = normal * 100 

Note: to pass the course you must pass the weighted average of the assignments and the weighted average of the exams.


Assignments are meant to provide meaningful, engaging experiences in constructing interfaces while giving you the opportunity to create applications you will want to share with others. There's lots of room for creativity in assignments and each will have a component for going above and beyond the basic assignment specification.

The assignments in this course require a significant amount of time. Do not underestimate the time it takes to code interactive applications! Due dates will be posted in the course schedule as assignments become available.

There are four assignments. The topics are placeholders, meant to illustrate the concepts that we'll be addressing in each.

Sample code that you can use in your assignments may be posted on the course schedule, alongside lecture notes.

Assignment Policies

  1. Assignments will be done in Java and Android, and you can write code on any modern desktop platform (Windows, OS X, Linux). Exact details will be provided in the assignment specifications.
  2. Due dates are specified on the Schedule. Late assignments will not be accepted, and will receive a grade of zero.
  3. Submissions must be made via Subversion (SVN) repository. Detailed instructions are below.
  4. Assignments are your individual work:
    • You can use code examples provided in-class.
    • No external or third-party code is allowed in your assignments (i.e. you are restricted to core Java/Android classes).
    • You should NOT be doing general Internet searches for specific solutions.
    • If you're not sure, ask the instructor or TA.
  5. After assignments are graded, a detailed marks file will be checked into each students private repository containing the marks for that assignment.

Subversion (SVN)

We will be using Subversion to submit all of the assignments for this course. Subversion (typically shortened to SVN) is a version control system, which stores files and a history of all of the changes to those files. The server holds the canonical version: changes are made locally, and "committed" to the server after they've been tested, integrated etc.

Your email and password will be emailed to you in the first week of class. If you don't receieve an email, check your spam folder! If you still can't find it, contact the IA.

Use the URL below, replacing "userid" with the username you were provided:

The links below provide some basic information on setting up and using SVN. For detailed information, see Version Control with Subversion.


This is a typical SVN workflow:

  • Copy a set of files from the remote machine to your local machine. The local copy is called a "working copy" [svn checkout]
  • Work on files on your local machine, adding or editing files as needed [svn add]
  • Push the changes back to the repository when you're done [svn commit]

You can push as many changes are you like over time (and it's a good practice, since everytime you save changes to the server, you've created a checkpoint).


SVN commands all have the form "svn [command]". Type "svn help [command]" from the shell or command-line to get detailed help (e.g. "svn help commit"). You can also download a printable Subversion Cheat Sheet.

Commonly-used commands include the following:

svn checkout Checkout the latest version from the repository, creating a local copy.
svn update Get the latest version from the server, and merge it into your local copy. Typically required when multiple people are submitting changes to the same repository.
svn add Flag a file that doesn't exist in the repository, so that it's added during the next "svn commit".
svn commit Commit changes to the repository. Files that have been flagged with "svn add" will be added as well.
svn status Show you the status of the local files (i.e. if you have changes outstanding, that need to be committed).
svn log Show a history of changes that have been committed to the repository.

Setup Step 1: SVN Client Installation

To use Subversion, you need to install client software on your computer. Linux has a set of command-line tools pre-installed, but Mac and Windows users will need to install client software. Here are some recommended packages, by platform:

Windows Command-line
Mac Command-line Included in the OS (type "svn" at the command-line)
SvnX SvnX GUI (Open Source)
Versions Versions Subversion Client (paid)
Linux Command-line Included in the OS (type "svn" at the command-line)

Setup Step 2: Checkout Repository

Once the client software is installed, you need to checkout the repository to your local machine:

svn checkout svn:// .

Your "userID" and "password" are in the SVN email that you should have received in the first week of class. Most client software will store your username and password, so that you don't have to retype it with every command. Note that the '.' at the end of the command above means "current directory" and should not be omitted!

Also note that after you checkout your working copy, you will not need to specify the host and port information again during "svn add" or "svn commit" commands.

Setup Step 3: VPN Setup

You have to have a VPN setup in order to access SVN from off-campus. You will need to connect to the campus VPN anytime you perform a SVN operation (like, for example, submitting your assignment). Instructions can be found here: Once the Cisco VPN sofware is installed, connect using the VPN URL ( and your UW credentials.


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. See Academic Integrity Guidelines for more information.


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. When in doubt please be certain to contact the department's administrative assistant who will provide further assistance.


A student is expected to know what constitutes academic integrity, to avoid committing an academic offence, and to take responsibility for his/her actions (see Academic Integrity Guidelines). 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. For typical penalties check Guidelines for the Assessment of Penalties


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)

Students with Disabilities

AccessAbility Services, 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 them at the beginning of each academic term.