- Office Hours
- Subversion (SVN) Repository Setup
- Virtual Machine (VM) Setup
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 449, HCI, 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.
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.
MWF 12:30-1:20 OPT 309
MWF 1:30-2:20 OPT 309
(all email addresses are firstname.lastname@example.org)
The instructor is responible for the course as a whole: lectures, setting assignments and exams, developing marking schemes and resolving issues related to the course.
Byron Weber Becker (bwbecker@)
Office Hours in DC 3105: By appointment
The instructional apprentice is responsible for helping the instructor develop assignments and marking schemes, helping maintain marking consistency, resolving mark appeals, delivering two tutorials, covering at least one lecture when the instructor will be out of town.
Jeff Avery (j2avery@)
Teaching assistants are responsible for marking assignments, marking exams, and holding office hours.
Reza Adhitya Saputra (radhitya@)
Qifan Li (q73li@)
Edmund Liu (qfliu@)
Shaishav Siddhpuria (spsiddhp@)
Haiyu Zhen (h2zhen@)
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@)
Office hours will be held from 3-4pm in the TA's office. See above for office numbers. Days with a "x2" notation indicate office hours from 3 to 5pm.
|Week Of||Monday||Tuesday||Wednesday||Thursday||Friday||Assign Due|
|2015-09-28||Qifan||Shaishav||Reza x2||Shaishav x2||Reza||A1|
|2015-10-19||Qifan||Haiyu||Haiyu x2||Reza||Reza x2||A2|
|2015-11-09||Qifan||Edmund||Shaishav x2||Edmund x2||Shaishav||A3|
|2015-11-30||Qifan||Haiyu||Haiyu x2||Edmund x2||Edmund||A4|
assignments = A00*.01 + (A01*.10 + A02*.10 + A03*.10 + A04*.10)/.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.
Detailed assignment descriptions and due dates are posted in the course schedule when available.
There are four assignments plus a bonus:
- A0: Using Subversion (Bonus Assignment)
- A1: Events and Drawing (C++; X11)
- A2: 2D Graphics; Direct Manipulation (Java)
- A3: Model-View-Controller (Java)
- Assignments are in cross-platform languages and development frameworks (X Windows, Java, etc) but they must compile and execute in the provided virtual machine .
- Due dates are Fridays at 5:00 PM but not actually collected until 11:59 PM on the following Sunday.
- Submission must be via the CS349 subversion source code repository.
- 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.
- Grades are returned via a mark sheet added to your SVN repository.
- Recognizing that you put in significant work on these assignments, you'll never get a zero for an honest mistake. However, to disencourage patterns that affect our marking efficiency, marks will be deducted if TAs need to modify makefiles or add missing files or submissions are emailed to the instructor, etc. The number of marks deducted will be proportional to the amount of extra effort required by staff to rectify your mistake.
- Submission of a file named "Feedback.txt" is appreciated but not worth marks. It should contain feedback for making the assignment better.
We have prepared a Linux VM for this course, and we recommend that you use it for the X Windows assignment in particular. TAs will mark your assignment and assess its behaviour based on how well it runs in the VM, and you will lose marks if it does not run well in that environment. For this reason, please test all assignments on the VM.
Download the VirtualBox software for your computer and install it (your computer is the "host"). Version 5.0.4 was current at the beginning of the course and is the expected version.
- Download our CS349 VirtualBox VM (~1GB). To verify that it downloaded correctly you can check the md5sum.
Note: Downloading with a web browser seemed unreliable. You may want to try
scp YOUR_USERID@linux.student.cs.uwaterloo.ca:/u/cs349/pub/Lubuntu_14.04_F15.ova .instead.
- Start VirtualBox.
- Select File→Import Appliance... and import the VM downloaded from step 2.
- Find "Lubuntu_14.04F15" in the list of virtual machines and power it up.
- Login as user cs349 with password cs349f15. Your VM will be on the network, so change the password right away (
passwdfrom the shell)
- Check that your VM works:
- Open the terminal (link is in side bar)
- Test X Windows by running xeyes, xclock, xcalc, etc
- Change to the 'hellos' directory ('cd hellos')
- Test X Windows with makefile to compile and run a simple client application ('make xwindows')
- Test Java with makefile to compile and run a simple application ('make java')
- The Firefox browser shows the web page for the F14 instance of CS349. Please change the settings to display the F15 version -- just change the F14 in the URL to F15.
- Create a share to a directory on your host operating system. This is much
safer than saving all your code inside the VM. The steps are explained in the VirtualBox manual. If you're using the supplied VM, Guest Addons are already installed. Configure shared folders by:
- Launching Virtualbox and select your VM from the list
- Click on Settings --> Shared Folders
- Browse to the folder that you want to share, and provide a name (your share folder will appear in
- You may need to reboot Linux to have it show up.
To work on your assignments, check out your subversion repository as follows :
svn checkout --username USERID svn://ubuntu1204-004.student.cs.uwaterloo.ca:6002/cs349_repo/USERID .
Where "USERID" is your WatIam userid, shortened to eight characters. Note that the '.' at the end of the command above means "current directory" and must be included (or replaced with a directory name).
You will be asked for a userid and password to proceed with checkout. Use the ones we sent you via email the first week of class (if you added the course late, then you may need to email the instructor to get these). You can choose to store your userid/password locally where you are running your subversion client to save you from having to type it in the future. Your client should ask if you want to do this.
If you are working from off-campus you will likely need to connect to the internet using UW's VPN (virtual private network) service. See vpn.uwaterloo.ca for more details.
Once you have checked out a copy, you can add files and directories using the
svn add command, and then check-in changes using
svn ci. For help, type
svn help command, where
command is the command you'd like help on.
Also note that after you checkout your copy, you will not need to specify the host and port information during "svn add ..." or "svn ci ...", etc., that is stated above in the initial "svn checkout ..." command.
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.]
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.
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.
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.
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.