Spring 2022
University of Washington
This course focuses on the design and programming of interactive systems, exploring various programming paradigms, event handling, and accessibility. It requires prior knowledge of Java and familiarity with data structures. This course helps to develop user-friendly interfaces and study existing interfaces. Although the platform used is Android, it's not strictly an Android programming course.
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.
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.
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.
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.
Slides available at Schedule
No videos available
Assignments available at Assignments
Resources available at Documentation