Welcome to Interaction Programming!
Interactive technology is changing society. Some of today’s interfaces are used by a billion people at a time. Almost everything we create is created for people to use, through user interfaces. We will learn about interactive systems, including programming paradigms and design of event handling, layout, undo, accessibility and context awareness.
For quick links to key things, check out the navigation bar above and the table of contents here:
- Class Times
- Course staff
- Should I take this class?
- Prereqs and expectations
- Course Modules
- Course Structure
- Class Coordination
- Class Expectations
- Religious Accommodations
- Other relevant classes to know about
See Canvas for all zoom meeting links
Class Time: M/W/F at 10:30am PDT
Lab Times: 9:30am PDT (Section AA) and 10:30 am PDT (Section AB)
(More information on Pronouns)
Lauren Bricker (she/her)
Office Hours: Mon/Fri 11:30 am -12:30 pm PDT
|Section AA||Taylor Gotfrid (she/her)||Section AB||David Chen (he/him)|
|Jay Lin||Brian Lee (he/him)|
|Jasper Palmer (he/him)||Michelle Lin (she/her)|
|My Tran (she/her)|
|Infrastructure||Zach Cheung (he/him)||Jeremy Zhang (he/him)|
|Sophie Tian (she/her)|
Should I take this class?
Yes! Some of today’s interfaces are being used by a billion people at a time. Almost everything we create is created for people to use, and user interfaces are how people interact with anything else you do (whether it is a new machine learning algorithm or a database system). User interfaces are incredibly important, but they also represent a different programming paradigm than you may have learned before. This class will teach you
- How to write an event-driven program which reacts to user input and displays output. If you’ve never done this before, the abstractions you will learn are standard in almost any user interface toolkit. Even if you have, too often, without attention to structure, interfaces become impenetrable spaghetti code.
- How to think about the design of novel interaction techniques. As devices diversify, so too do the ways in which people interact, from voice based interfaces to augmented reality. By understanding the principles of interaction technique design you can do a better job of making interactions that users will want, which improves both the user experience and the business value of what you create.
- How to avoid common gotchas in the implementation of user interfaces. We will teach you the proper way to create Accessible Interaces and implement features like Undo. We will also touch on other design principles (no modal dialogues; good use of color; inclusion of support for help and so on) that work in any user interface!ß
Taking a class is a big commitment, and you will work hard in this class. So we want to help you make sure this is the right class for you. Below is some information about prerequisites and expectations.
Prereqs and expectations
The only requirement for this class is that you have taken CS 142 and 143 or an equivalent class, meaning you are comfortable programming in Java, and have some experience with data structures. However, if you are not comfortable working in an IDE environment, using version control, and picking up and working with someone else’s library code, you will likely need to plan for extra time with TAs, and possibly attend extra tutoring sessions, to keep up with the class. Taking CSE 391 just before or concurrently with 340 can help, but our staff can also assist where needed.
The specific platform and language for this class are Java on Android phones (or simulators); using the IntelliJ IDE (Android Studio). While Google is switching over to Kotlin, there are good reasons to start learning Android with Java first.
Note that this class is designed for CS majors, and other students who work regularly with information technology and are strong programmers. While we will consider applications from outside the major, financial and other restrictions may limit space for such students.
|Module||Interaction Programming Theory||Programming Practice|
|Visual||- Interface Toolkits
- Interactor Hierarchy
- Peer Review
- Visual Design Tips
|- Android Programming
- Drawing on a Canvas
- Bounding Boxes
|Layout||- Visual Layout
- Layout Constraints
- Layout algorithm
|- Layout in Android|
|Accessibility||- Accessible Design Principles||- Building Accessible Apps|
|Events||- Input Devices and Types
- Event Handling
- Model View Controller
- Essential Behavior
- Finite State Machines
|- Java callbacks
- Event handling in Android
- Build a novel color picker interactor
|Interaction||- Physical computing
- Motor Design Tips
- Predicting and testing interactor efficiency
- Application design principles
- Quantitative Study Design
- Data Analysis
|- Building pop up menus|
|Behavior||- Theories of User Behavior
- Behavior Change
- Machine Learning
- Application Security
- Heuristic Evaluation
|- Implementing a drawing program
- Implementing undo/redo feature
Each week, there will be three hours of lecture material (Monday, Wednesday, Friday) and one TA-led lab (Thursday). In addition the TAs will host office hours, often in pairs.
All schedule sessions for this course are scheduled to run synchronously at your scheduled class time via Zoom. These Zoom class sessions will be recorded. The recording will capture the presenter’s audio, video and computer screen. Student audio and video will be recorded if they share their computer audio and video during the recorded session. The recordings will only be accessible to students enrolled in the course to review materials. These recordings will not be shared with or accessible to the public.
The University and Zoom have FERPA-compliant agreements in place to protect the security and privacy of UW Zoom accounts. Students who do not wish to be recorded should:
Change their Zoom screen name to a school appropriate screen name that hides any personal identifying information such as their name or UW Net ID, and not share their computer audio or video during their Zoom sessions.
Lectures are designed to introduce new material throughout the quarter, motivate key theories and concepts, as well as demonstrate Interface Programming primarily using the Android Studio development environment.
The goals in this class center around learning by doing. This means that hands on time trying out everything from implementation to evaluation is critical to learning. Active learning has been shown
Active Learning is an educational approach that has been demonstrated to increase student performance in STEM subjects (cite). Thus class time will be used as much as possible for activities, discussion and review. You will be graded on participation in lecture via answering checks for understanding using a variety of technologies, including poll everywhere. We also highly encourage questions in lecture. Often many students share the same question and those questions can help the instructor gauge student understanding.
Preparation outside of class and participation in class are both very important and will improve your class experience. The pre-lecture readings and activities are designed to support your studying and learning, particularly as we discuss both theoretical and practical aspects of interface Programming. Stay on top of the course materials, bring your questions to class and seek help if there are problems.
Lecture examlets and final reflection
There will not be a midterm or final exam this quarter. Instead, there will be 4 quizzes held during the last 15-30 minutes of Friday lecture every other week, beginning the third week. The final project will incorporate a deeper reflection that covers all course material.
Remote Lecture Guidelines and Expectations
Students are expected to adhere to the below expectations for remote lectures. These guidelines are intended to help lecture go more smoothly, facilitate questions and group activities, and foster a sense of community within the class.
- You are not required to have your video turned on during lecture except for during group activities in breakout rooms
- Please keep your mic muted unless you’re asking a question
- To ask a question, please type “hand” in the chat in Zoom. The instructor or moderator will call on you and then you can unmute your mic and ask your question
- You may also post questions in the chat, but you may be asked to unmute your mic and ask your question aloud
- There will be individual and group based activities which you are expected to participate in (please contact the instructor if you not able to participate in the lectures synchronously due to your current living situation. )
- It may be helpful for some students to see the instructor speaking even when the instructor is sharing their screen. This can be achieved by right clicking the instructor’s video and choosing “pin” video. Then, under “view options” you can choose the side-by-side option which will enlarge the instructor video
On Thursdays, you will participate in a weekly lab, held at either 9:30 or 10:30 am PDT. These labs will be similar those you may have had in other classes - we will spend the 50 minutes answering questions, going over common errors in homework solutions, discussing sample problems in more detail than we can in lecture, and completing exercise worksheets with TAs available to help.
Remote Lab Guidelines and Expectations
Students are expected to adhere to the below expectations for remote labs. These guidelines are intended to help lab go more smoothly, facilitate questions and group activities, and foster a sense of community within the class.
- You are required to have your video on at all times. This is not to monitor you, but to help create a sense of community in the classroom
- Please keep your mic muted unless you’re asking a question
- To ask a question, please type “hand” in the chat in Zoom. A TA will call on you and then you can unmute your mic and ask your question
- You may also post questions in the chat, but you will be asked to unmute your mic and ask your question aloud
- There will be individual and group based activities which you are expected to participate in
This is a challenging, four credit class, meaning you should expect 8 hours of homework outside of class a week. We hope make the workload as predictable as possible. Assignments will have a fixed and an open ended piece, and some will require a structured peer review. After you turn in an assignment you will also work on a short practice quiz on the most relevant material taught in the assignment. About a week after the practice quiz we will have an examlet - a short check for your understand on the the prior modu
FIX: Homework will typically involve either a single (one-week) part or be split into two parts, with each about a week long
We want you to succeed in this class, and an important way that you do that is by asking questions and discussing course issues with your peers and teaching staff. Some ways to do that include:
- We have a class discussion board on Ed, where you can make public posts that benefit the whole class, and are answered more quickly because your fellow students can help the course staff by responding also. This is the best way to ask questions about things like homework. Before posting, please search through the questions that have already been posted in case someone has already asked the same question.
- We hold office hours (see above). If none of those times work for you. You can also discuss matters with us privately on the Ed discussion board. Using Ed gets the whole course staff at once and is usually faster than email. Lastly, if none of these work for you you can send an email asking to set up an appointment.
The class is a shared learning environment, and it is important that you treat everyone in the class with respect. Some specific things we will do to try to make the class a welcoming environment:
- Accessibility: We have attempted to make all the course materials accessible according to web standards. If you need any additional support, we am always happy to work with you and Disability Resources for Students (DRS) to make sure that the class meets your needs. DRS offers a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff, but it is important to start the process as soon as possible to avoid delays.
- Inclusivity: We will be working toward a broad base of examples, and a welcoming environment for all. Please let us know if you see opportunities to improve this.
- Working Together: Working together is encouraged, as long as you in the end implement your own code (it is not directly copied from another student or any other source on the internet), and make sure to document any information you get from other students in comments at the top of the relevant file.
- Integrity: Academic integrity is an important value that we adhere to in this class. Instructors are expected to respect student privacy, and treat students fairly. Students are expected not to share code/solutions with the broader public, and not to plagiarize or cheat, as described in the Allen school conduct guidelines. For more details on how this will be implemented in this class, please see the Academic Conduct page.
Grades will be assigned approximately as follows:
- 70%: Assignments
- 15%: Effort, participation and altruism (EPA)
- 15%: Assessments
EPA (Effort, participation and altruism)
You can earn “points” for each of the following:
- Effort: Attending office hours, lectures, and sections. Keeping up with the discussion board.
- Participation: Asking questions in lecture and on the discussion board, voting on peer instruction questions, interacting with TAs and other students.
- Altruism: Helping others in lecture, during office hours, and on the discussion board.
EPA scores are kept internal to the staff (i.e. not disclosed to students).
You have 3 free late days which will automatically be applied until they run out, following which each late day will incur a 10% penalty on the assignment that was due
Each homework will allow up to two late days, after which turn-ins will be given a zero.
Reflecting on feedback is one of the most valuable ways you can learn from your mistakes, and we encourage you to do so. If you have a question about a grade you received or if you feel the grade you received is incorrect, please email an instructor for an appointment to discuss the assignment and your grade in detail.
It is also possible for the graders to make mistakes. If that happens we certainly would like to correct the error. Please note the following:
When you request a regrade, we may look at the entire assessment, homework or reflection. Therefore, it is possible for your grade to go either up or down through this process.
- Coding Assignments: Regrade requests for homework assignments must be
submitted within one week of when the grade was returned to you. You must do two things in
order to request a regrade of a homework (failure to do these two things may result in the
regrade not happening):
- Reply to the code review comment that is prompting your request of the regrade. You can find your code review comments in your GitLab repository for that assignment.
- Send a private message on Ed to the instructors that you are requesting a regrade. Include a link to the repository in your message and a written summary describing why your work should be reexamined.
- Exams and Written Assignments: We will use Gradescope to grade exams and manage regrade requests. Via Gradescope, you should submit any requests separately for each problem with an explanation of why you want this problem regraded. The time limit for such regrade requests will be detailed in the email you receive from Gradescope.
There will be four short examlets at the start of class, every other Friday.
- April 17
- May 1
- May 15
- May 29
Alternate examlets will only be given in unusual extenuating circumstances. You must contact the instructor prior to the examlet date if you believe you need to take the examlet at another time, but no later than least two days prior to the examlets.
More information about the exams, their structure, and what resources you will be allowed to use will be discussed in class and listed on the course website as we approach the these dates.
Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form on UW’s site.
Other relevant classes to know about
There are a number of classes on campus that teach related concepts which you may wish to consider in addition to this one. As of Spring 2020, here are the ones we are aware of:
- CSE 154: Web Programming: Sp 20 This course covers languages, tools, and techniques for developing interactive and dynamic web pages. Topics include page styling, design, and layout; client and server side scripting; web security; and interacting with data sources such as databases.
- HCDE 310: Interactive Systems Design & Technology This course is a project based course that teaches how to prototype applications on the web using Python that solve human problems or enable new activities. Includes information about APIs and how people interact with them. It differs from CSE 340 in its choice of platform. Additionally, it doesn’t cover the theory of UI programming, nor issues such as accessibility, undo, and so on.
- CSE 440: Introduction to HCI; 441: Advanced HCI This is an advanced series of courses for undergraduate seniors. The focus of 440 is less on programming and more broadly on methods for designing, prototyping, and evaluating user interfaces to computing applications, while 441 is an open ended capstone course. These are excellent follow on courses to 340, for a student who wants to go deeper into how to make usable, enjoyable effective interfaces, and how to solve interesting problems with HCI. Related is CSE 510, the HCI course for the professional masters program.
- HCID 520: User Interface Software + Technology (Wi 17, Wi 16 Wi 19) This course teaches about user interfaces, including what they are, how they are built, and some inventions in user interface software and technology. There are many similarities between these classes. However HCID 520 is only open to MHCI+D students Masters students.
- HCID 521: Prototyping This class is for the MHCI+D students only and focuses on prototyping techniques, not implementation. It covers everything from paper prototyping to physical interfaces to 3D printing.