Skip to the content.
This is the Spring 2021 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

Schedule: Click here for a visual schedule of class, office hours, and section zoom links.
Class Time: M/W/F 10:30pm - 11:20pm PDT
Lab Times: 9:30 am PDT (Section AA) and 10:30 am PDT (Section AB)

Course staff

All times listed in the Pacific (Seattle) Time zone


Lauren Bricker Lauren Bricker (she/her)
Office Hours: 11:30-12:30 M/W


Section AA Zeynep Toprakbasti Zeynep Toprakbasti (she/her); M 12:30, F 1:30 Jesse Martinez Jesse Martinez (he/him); Office Hours: T 2:00, W 3:30
Section AB Taylor Gotfrid Taylor Gotfrid (she/her); Office Hours T 10:00, W 11:30 Jasper Palmer Jasper Palmer (he/him); Office Hours: Th, F 11:30
Grader Jay Lin Jay Lin; Office Hours: W, Sat 2:30pm    

(More information on Pronouns)

Why should I take this class?

Interfaces are an importan part of our daily lives. 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 any class is a commitment, and this one is no exeception. We want to make sure you get the most out of your experience. Below is some information about prerequisites and expectations.

Prereqs and expectations

The only requirement for this class is that you have taken CSE 142 and 143 or an equivalent class, meaning you are comfortable programming in Java, and have some experience with data structures.

There are other skills that are required for the class that are not explicitly taught, which means you should plan to spend extra time (either independently or in OH) learning and practicing those skills. These include:

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 CSE 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 Learning Goals

This is an interaction programming course which will teach the abstractions that underly all user interfaces. To learn these concepts, we will cover a mix of theoretical aspects of HCI (such as how to predict the time it will take to click on a button, or why Undo is important to implement) and practical aspects of HCI (such as how to handle user interface events). What we will not cover is Android programming.

To re-iterate, this is not an Android programming class and you will be expected to research Android programming yourself. We will point you at the relevant of Android documentation but you must be willing to read through and explore this documentation on your own.


How do I draw things on the screen? Do you know how to control what is shown to the user?


How do I set up an interface so that it looks the way I want and reacts properly to changes in orientation and size? Do you know how to implement a layout, supporting reactivity and so on?


How do I handle input from the user, both at the application level and within a specific interactor? An advanced but important aspect of android programming is implementing your own interactors. This is strongly tied to event handling because they can only be interactive if you know how to deal with events.


Learn to build an application that meets basic standards that require programmatic support for accessibility, security, and interactivity.

There are interaction programming concepts that need to be considered at the application level. These may not ever show up in a spec, but are still the responsibility of the implementer to consider. Some examples include making your interface secure; supporting undo; and making it accessible. Human behavior is another essential aspect of interface design you must consider. But how does it interact with interface programming? More specifically, this class will cover the following learning goals

Communication about app concerns

You are unlikely to be building an interface in a vacuum – you will need to be able to read specs that are provided to you, identify potential problems, and advocate for new directions. These are communication tasks that are critical to success whether you are building interfaces or designing them. We will cover a sample of these in this class including:

Course Structure

Each week, there will be three hours of lecture material (Monday, Wednesday, Friday) and one TA-led lab (Thursday). In addition the instrutor and TAs will host office hours, sometimes 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:


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 to increase student performance in STEM subjects.

Thus, class time will be used as much as possible for in class exercises and surveys, as well as discussion and review. You will be graded on general participation in lecture for understanding using a variety of technologies. 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. We will use interactive techniques during class to check for your understanding on these materials. Stay on top of the course materials and bring your questions to class!


There will not be quizzes, or a midterm or final exam this quarter. Instead, your knowledge will be assessed via your code and detailed reflections related to those coding projects. In the final reflection you will expect you to synthesize all of the course material.

There will be “practice” quizzes each week that will allow you to check for your own understanding on the material in the course. You will be graded up to 2 points for each practice quiz that is completed. This work will be part of your participation grade for the course.

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 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. They will typically involve either a single (one-week) part or be split into two parts, with each about a week long. After you turn in an assignment you will also work on a short practice quiz on the most relevant material taught in the assignment.

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:

Android Studio and Emulator Remote Access

In this class you are required to use Android Studio as well as the emulator or a physical Android phone to test your code with. If you are unable to install Android Stuido on your own machine, you can remotely access virtual lab machines which can run both Android Studio and the emulator. For instructions on how to run the virtual machine and to install the necessary software check this link: Remotely Access Android Studio + Emulator.

The Allen school support staff have a limited number of Android phones available to check out for the quarter. We will be asking you to fill out a form (sent on our discussion board) by the first Wednesday of the class to ensure a phone can be shipped to you as soon as possible.

Class Expectations

The class is a shared learning environment and it is important it is a welcoming environment for everyone, from all backgrounds. As instructors, we know that students in this class may need materials to be accessible by screen reader, or may need extra time on exams. You may observe religious holidays that overlap class times, or have work, childcare or appointments that have to be prioritized at specific times. As students we also ask you to remember that each person brings different priorities and experiences to class. We should all strive to treat everyone in the class with respect and understanding.

The Allen School seeks to create a more diverse, inclusive, and equitable environment for our community and our field (see the Allen School’s Inclusiveness Statement). Specific things we will do to promote welcoming class environment include:


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 2 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.

Academic Conduct

Academic integrity is an important value that we adhere to in this class. For more details on how this will be implemented in this class, please see the Academic Conduct page, but in summary:

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:

Indigenous Land Acknowledgement

The University of Washington acknowledges that we are on sacred land of the first peoples of Seattle, the Coast Salish people, past and present. We honor, with gratitude, the land which touches the shared waters of all tribes and bands within the Suquamish, Tulalip and Muckleshoot nations.