CS 349 User Interfaces (Winter 2019)
This course teaches the principles of creating user interfaces (UIs) including underlying UI architecture and algorithms, how to implement UIs from scratch and using UI frameworks, theories and methods for UI design, and an introduction to the field of human-computer interaction.
- Course Staff
- Office Hours
- Course Policies
- Mental Health Resources
We’ll be using this CS349 Piazza site for all announcements, as well as questions and answers about the course material and assignments. Please create an account at the start of the term, using your real name and your Waterloo username; this will make it easier for course staff to identify you if required.
Alexandra (Sasha) Vtyurina
(all email addresses are @uwaterloo.ca)
All lecture slides and demo code are available in Git.
To get a copy,
git clone https://git.uwaterloo.ca/cs349-public/1191.git. Make sure to
git pulloccasionally to pick up changes, since we'll be adding slides and sample code through the term.
- MWF 12:30-01:20, RCH 309 (CS 349-001, Ed Lank)
- MWF 12:30-01:20, RCH 207 (CS 349-004, Jeff Avery)
- MWF 01:30-02:20, RCH 309 (CS 349-003, Ed Lank)
- MWF 01:30-02:20, RCH 207 (CS 349-002, Jeff Avery)
There are no required textbooks for this course; students are expected to read the provided lecture notes and attend class to learn this material. There are three relevant, but optional, books that have been placed on reserve:
- 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. A copy is available on a 3-hour loan at the DC library under call number UWD1568.
Staff will hold office hours in MC 3004, starting the week of January 14. There are no office hours during Reading Week (Feb 19-22).
- 9:00 AM - 10:00 AM Michael
- 4:00 PM - 5:00 PM Neda
- 10:00 AM - 12:00 AM Jeff (DC 3107)
- 3:00 PM - 4:00 PM Shubhankar
- 9:00 AM - 10:00 AM Jay (starting Jan 30)
- 4:00 PM - 5:00 PM Alexandra (Sasha)
- 10:00 AM - 12:00 PM Ed (DC 3140)
- 1:00 PM - 2:00 PM Rebecca
- 10:00 AM - 11:00 AM Damien
- 11:00 AM - 12:00 PM Constant
There are five major assignments (each worth 5-10%), a midterm worth 20%, and a final exam worth 40%. Assignment dates are in the schedule, and midterm and final exam dates will be posted when available. Final course grades will be calculated as follows:
assignments = (A1 * 0.05 + A2 * 0.10 + A3 * 0.10 + A4 * 0.10 + A5 * 0.10) / 0.40 exams = (0.20 * Midterm + 0.40 * Final) / 0.60 normal = (0.60 * exams) + (0.40 * assignments) if assignments < 0.50 or exams < 0.50 grade = min(0.46, exams, normal) * 100 else grade = normal * 100
This means that in order to pass the course you must pass the weighted average of the assignments and the weighted average of the exams.
Your marks can be securely viewed through https://www.student.cs.uwaterloo.ca/~cs349/cgi-bin/displayMarks.cgi. Please contact the course ISC if you notice an error in your recorded grade.
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 room for creativity in assignments.
The assignments in this course require a significant amount of time. Do not underestimate the time it takes to code interactive applications!
There are five assignments. A0 will not be graded, but must be completed. The remaining assignments are worth between 5% and 10% each. You can work on assignments in a lab, or on your own machine. Instructions for setting up your development environment are listed beside the respective assignments below.
- A0: Setting up Git (0%)
- A1: Setup and Build Java (5%)
- A2: Events and Drawing - Java/Swing (10%)
- A3: Model View Controller & Widgets- Java/Swing (10%) -- starter code
- A4: Mobile Widgets - Java/Android (10%)
- A5: Scene Graphs - Java/Android (10%)
Detailed assignment descriptions and due dates are posted in the schedule when available.
Late assignments will not be accepted unless prior arrangements have been made with the instructor.
Assignment A0 is not graded, but must be completed before any other assignments can be submitted.
You may develop on your own machine (Windows, macOS, Linux), but you must confirm to the tools/versions specified in the assignment description. Typically this means running specific versions of Java, xlib etc. as specified.
All required source code, assets (e.g. images, sound files) must be submitted for each assignment. If the TAs can’t build and run your submitted solution, you may receive a grade of 0. Details on how a particular assignment should build (e.g. makefile, project file) are included in the assignment description.
All submissions must made be via your Git repository. Assignments submitted by any other method (e.g. email) will not be graded.
Grades are returned via a mark sheet added to your Git repository.
Assignments are your own individual work:
- You must design and implement the assignments by yourself. There are no group assignments.
- You can use code examples provided in-class. You are allowed to directly use or include portions of in-class samples in your assignments. Some assignments may also, at the instructor’s discretion, include starter code that you can use.
- You cannot use anyone else’s code in your assignments (this includes current or past students of this course), and you are prohibited from sharing your code with anyone else in the course. You can discuss how you accomplished something in general terms with other students.
- No third-party code or libraries are allowed in your assignments, other than those explicitly permitted by the assignment description. You should not use code you find on the Internet (e.g. GitHub, Stack Overflow, etc.). It is perfectly acceptable to search for a general technique (e.g. how does this class work?) but you cannot use any third-party code in your assignments.
- You should not make your code publicly available on any hosting sites (e.g. GitHub), even after the end of the term. If you wish to show your code to potential employers, you should post in a private/restricted repository instead.
MOSS (Measure of Software Similarities) is used in this course as a means of comparing students' assignments to ensure academic integrity. We will report suspicious activity, and penalties for plagiarism/cheating are severe. Please read the available information about academic integrity very carefully.
Regarding policies 1 to 4, we recognize honest mistakes occur. If the TA can easily modify a makefile, correct an errant character in a source file, or comment out small portions of code so they can build or run your code, they will. If you made an error submitting to git, and you can provide substantial proof that you completed your solution on time, in some cases your solution may still be accepted. However, in either case, marks will still be deduced based on factors such as the amount of extra effort required by the TA to rectify your mistake, amount of time past the deadline, etc.
General Course Policies
Students should be aware that this course contains the intellectual property of their instructor, TA, and/or the University of Waterloo. Intellectual property includes items such as:
Lecture content, spoken and written (and any audio/video recording thereof); Lecture handouts, presentations, and other materials prepared for the course (e.g., PowerPoint slides); Questions or solution sets from various types of assessments (e.g., assignments, quizzes, tests, final exams); and Work protected by copyright (e.g., any work authored by the instructor or TA or used by the instructor or TA with permission of the copyright owner). Course materials and the intellectual property contained therein, are used to enhance a student’s educational experience. However, sharing this intellectual property without the intellectual property owner’s permission is a violation of intellectual property rights. For this reason, it is necessary to ask the instructor, TA and/or the University of Waterloo for permission before uploading and sharing the intellectual property of others online (e.g., to an online repository). Permission from an instructor, TA or the University is also necessary before sharing the intellectual property of others from completed courses with students taking the same/similar courses in subsequent terms/years. In many cases, instructors might be happy to allow distribution of certain materials. However, doing so without expressed permission is considered a violation of intellectual property rights.
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 http://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 http://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, [http://www.adm.uwaterloo.ca/infosec/Policies/policy71.htm]. For typical penalties check Guidelines for the Assessment of Penalties, [http://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
AccessAbility Services collaborates with all academic departments to arrange appropriate accommodations for students with temporary or permanent disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations, please register with the AccessAbility Services at the beginning of each academic term.
Mental Health Resources
Mental Health: If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support.
- Campus Wellness https://uwaterloo.ca/campus-wellness/
- Counselling Services: firstname.lastname@example.org / 519-888-4567 ext 32655 / Needles Hall North 2nd floor, (NH 2401)
- MATES: one-to-one peer support program offered by Federation of Students (FEDS) and Counselling Services: email@example.com
- Health Services service: located across the creek from Student Life Centre, 519-888-4096.
- Good2Talk (24/7): Free confidential help line for post-secondary students. Phone: 1-866-925-5454
- Here 24/7: Mental Health and Crisis Service Team. Phone: 1-844-437-3247
- OK2BME: set of support services for lesbian, gay, bisexual, transgender or questioning teens in Waterloo. Phone: 519-884-0000 extension 213
Diversity: It is our intent that students from all diverse backgrounds and perspectives be well served by this course, and that students’ learning needs be addressed both in and out of class. We recognize the immense value of the diversity in identities, perspectives, and contributions that students bring, and the benefit it has on our educational environment. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In particular:
- We will gladly honour your request to address you by an alternate/preferred name or gender pronoun. Please advise us of this preference early in the semester so we may make appropriate changes to our records.
- We will honour your religious holidays and celebrations. Please inform of us these at the start of the course.
- We will follow AccessAbility Services guidelines and protocols on how to best support students with different learning needs.