This course teaches 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.
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.
Building Interactive Systems, by Dan R. Olsen Jr. (Available at DC Library)
Design of Everyday Things, by Don Norman
Designing with the Mind in Mind, by Jeff Johnson
All announcements, questions, and answers are on Piazza.
We'll be using an online tool named Piazza for all announcements, as well as questions and answers about the course material and assignments. You should have received an invitation email (or will shortly); when you register, please use an identifier that clearly indicates who you are for the purposes of the course.
(all email addresses are firstname.lastname@example.org)
Jeff Avery (j2avery@)
Office Hours: Tuesdays, 10:00 - 11:00 AM (DC 3139)
Instructional Assistant (IA)
Jingjie (Vincent) Zheng (j49zheng@)
Office Hours: Mondays, 11:00 - 12:00 PM (DC 3144)
Teaching Assistants (TAs)
Ivens Portugal (iportugal@)
Reza Adhitya Saputra (radhitya@)
Eldar Khalilov (ekhalilo@)
David Xu (d44xu@)
Haiyu Zhen (h2zhen@)
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 else 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.
- A1: Getting started (MVC, events, interactor tree)
- A2: Interactive interface (visual design, creating widgets)
- A3: Graphics (affine transformations, scene graphs)
- A4: Advanced (interacting with web services? animation?)
Starter code is provided and is added to your SVN repository before assignments are handed out. Make sure to 'svn update' before you start!
- Due dates are firm (typically Friday at 5 PM). Assignments submitted after this deadline will not be accepted, and will receive a grade of zero.
- Submission must be via the Subversion (SVN) repository. Detailed instructions are below.
- Assignments are your individual work:
- You can use code examples provided in class and on on the resources page.
- You should NOT be doing general Internet searches for specific solutions.
- If you're not sure, ask the instructor or TA.
- After assignments are graded, a detailed marks file will be checked into each students private repository containing the marks for that assignment.
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.
The links below provide some basic information on setting up and using SVN. For detailed information, see Version Control with Subversion.
Working with Subversion typically involves this 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 InstallationTo 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:
|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://assignments.student.cs.uwaterloo.ca:6002/cs349_repo/userid .
Replace the "userid" in the URL above with your WatIam userid, shortened to eight characters. Note that the '.' at the end of the command above means "current directory" and should not be omitted.
You will be asked for a userid and password to proceed with checkout; use the ones we sent you via email. Most client software will store your username and password, so that you don't have to retype it with every command.
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: http://vpn.uwaterloo.ca. Once the Cisco VPN sofware is installed, connect using the VPN URL (cn-vpn.uwaterloo.ca) and your UW credentials.
For further assistance, please contact staff during office hours.
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.