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

Our course will be held in person, although some office hours will be held remotely through Zoom. See Canvas for all zoom meeting links.


Click here for a visual schedule of class times and office hours times and locations.

Class Time: M/W/F 10:30 - 11:20am PST NAN 181
Lab Times: AA: Th 9:30 am PST LOW 201
  AB: Th 10:30 am PST CMU 326

Course staff


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


Section AA Thevina Dokka Thevina Dokka (she/her) Henry Heino Henry Heino (he/him)
Section AB Jacob van't Hoog Jacob van’t Hoog (he/him) Daniel Campos Zamora Daniel Campos Zamora (he/him)
Section support/Grading Jay Lin Jay Lin (they/them)    
Infrastructure Jasper Palmer Jasper Palmer (he/him)    
Grading Aedan McCall Aedan McCall (they/them) Elizabeth Gossman Elizabeth Gossman (she/her)

(More information on Pronouns)

Course Learning Goals

Why should I take this class?

Interfaces are an important part of our daily lives and many of them are created as a connection from a human to a machine. Even a new machine learning algorithm or a database system requires some human connection in order for those systems to work.

User interfaces are incredibly important, but interactive user interaction requires a different programming paradigm than you may have learned before. In this you will learn how to:

The Course Details page describes each of our course modules as well as other classes that complement the learning goals in CSE 340.

What should I expect as a student in this class?

This is an interaction programming course which will teach the abstractions that underly all user interfaces (see the Course Details page for more information). 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.

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.


The only official 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, other restrictions may limit space for such students.

Course Structure

Each week, there will be three lecture hours (Monday, Wednesday, Friday) and one TA-led lab (Thursday). In addition the instructor and TAs will host office hours, sometimes in pairs.


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.

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. Pre-lecture readings are listed on the schedule page as well as in the Ed Lessons Goals and Resources for each week. 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!

Lecture Participation

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 your understanding. 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 as well as group discussion and review. We also highly encourage questions - often many students share the same question and those questions can help the instructor gauge student understanding. Part of your final grade will be an assessment of how you participate by asking or answering questions in the classroom, but also through a variety of technologies.


On Thursdays, you will participate in a weekly section, held at either 9:30 or 10:30 am PST. These sections will be run as labs, and will be similar those you may have had in other classes. You 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.

Course Support

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:

Required Course Work

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.

Formative assessments

The goal of formative assessment is two fold:

We have two major forms of formative assessment in this course, and most will be in the form of Ed Lessons that you will complete by a specific due date. Completion of this formative work will will be considered as part of your participation for your EPA grade.

Class work

Each lecture and section will have some amount of classwork work associated with it. It is intended that this work is completed during lecture, although occasionally you will have work that is due after that class. Deadlines for completing this work will be listed on the Ed Lessons page: for lecture these will be due by the next lecture time; and for section they will be due by Friday at 10pm.

Practice “quizzes”

There will be a “practice” quiz 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 your effort on each completed practice quiz. Practice quizzes will be considered as part of your participation for your EPA grade.

Summative assessments

Summative assessment is designed to evaluate your learning at the end of each of our units.

Note that there will not be a midterm or final exam in this class this quarter. Instead, your knowledge will be assessed via your code and detailed reflections related to those coding projects.


Assignments will require programming that will include a very scaffolded and structured portion and a very open ended portion where you demonstrate your learning. Many assignments will require you to take create a video of your functioning app. Some assignments will be evaluated by other people, through structured peer review or user testing.

Some assignments will be completed in a week while others will take two weeks, with a checkpoint in the middle.

Reports and Reflections

Each assignment will include a detailed reflection or report that will also help the course staff see how you have synthesized the learning goals for this class.

Note that a few reflection assignments will overlap with another assignment. In other words, you may be completing a reflection from one assignment while you are beginning to code on another one.

Final project

Your Final Project, done the last two weeks of the quarter, will be to develop an app of your own choosing (with some guidance from the course staff). The scope of project will be about as large as one of the larger programming assignments and must be an “original” idea, i.e. it can not be a typical “game” or app you will find on line.

The project will be broken into four phases: design, implementation, user testing, and a writing a report/reflection and producing a video demonstration and summary of the project.

EPA (effort, participation and altruism)

You will be assessed on the following:

With the exception of practice quiz scores, the calculation of your EPA score is kept internal to the staff (i.e. not disclosed to students).


Grades will be assigned approximately as follows:

Resubmission policy

Learning from mistakes is an important part of mastering any skill. To enable this, you are allowed to revise and resubmit your work on any assignment or report/reflection in order to demonstrate improvement after your initial submission. Note that class work (participation) and practice quizzes are not subject to the resubmission policy.

Resubmissions are subject to the following rules:

Note that it is in your best interest to correctly submit something that demonstrates progress by the due date, then continue to work on the project and do a resubmission after you have received feedback. That way you will get at least one round of feedback which you can use in your resubmission.

Late work

Class work (Ed Lessons) and Practice Quizzes will generally not be accepted after their published deadlines, except in extenuating circumstances. Please see the policy on extenuating circumstances (in the Class Expectations section for more information.

Assignments may be submitted late by utilizing a resubmission and following the normal resubmission process. Note that resubmissions can only be used for assignments for which feedback has been released– for most assignments, this means you will not be able to use a resubmission until at least one week after the initial due date.

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.

Remote Instruction


Zoom will be used for some number of office hours or special sessions, but lecture and section are expected to be in person.

Guidelines and Expectations

Students are expected to adhere to the following expectations for remote instruction in CSE 340. These guidelines are intended to help class go more smoothly, facilitate questions and group activities, and foster a sense of community within the class.

Note: 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

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 24 hours throughout the quarter. To borrow a phone you must visit the Allen School Help Desk (in Allen/CSE 207) during regular business hours. In the event that you need a phone during times of remote instruction, you may email (support@cs) or call (206.685.1224) and ask them to leave a phone at the front desk for pick up.

Should you need a phone for a longer period of time due to personal circumstances, we will ask you to send a private email message to the instructor to ensure a phone can be shipped to you as soon as possible.

Class Expectations and Academic Conduct

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, or 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:

Academic Conduct

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

Indigenous Land Acknowledgement

The University of Washington acknowledges the Coast Salish peoples of this land, the land which touches the shared waters of all tribes and bands within the Suquamish, Tulalip and Muckleshoot nations.