Skip to the content.
This is the CSE340-SP20 final website.

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

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)

Course staff

(More information on Pronouns)


Lauren Bricker Lauren Bricker (she/her)
Office Hours: Mon/Fri 11:30 am -12:30 pm PDT


Section AA Taylor Gotfrid Taylor Gotfrid (she/her)   Section AB David Chen David Chen (he/him)
  Jay Lin Jay Lin     Brian Lee Brian Lee (he/him)
  Jasper Palmer Jasper Palmer (he/him)     Michelle Lin Michelle Lin (she/her)
  My Tran My Tran (she/her)        
Infrastructure Zach Cheung Zach Cheung (he/him)     Jeremy Zhang Jeremy Zhang (he/him)
  Sophie Tian 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

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.

Course Modules

Module Interaction Programming Theory Programming Practice
Visual - Interface Toolkits
- Interactor Hierarchy
- Peer Review
- Visual Design Tips
- Android Programming
- Drawing on a Canvas
- Bounding Boxes
- Animation
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

Course Structure

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.

Lecture Readings

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.


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.


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

Class Coordination

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:

Class Expectations

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:


Grades will be assigned approximately as follows:

EPA (Effort, participation and altruism)

You can earn “points” for each of the following:

EPA scores are kept internal to the staff (i.e. not disclosed to students).

Late Days

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.

Regrade Policy

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.


There will be four short examlets at the start of class, every other Friday.

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.

Religious Accommodations

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: