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
- Course Learning Goals
- Course Structure
- Required Course Work
- Remote Instruction
- Class Expectations and Academic Conduct
- Academic Conduct
- Indigenous Land Acknowledgement
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|
Lauren Bricker (she/her)
Office Hours: 11:30am-12:30pm M/W
|Section AA||Thevina Dokka (she/her)||Henry Heino (he/him)|
|Section AB||Jacob van’t Hoog (he/him)||Daniel Campos Zamora (he/him)|
|Section support/Grading||Jay Lin (they/them)|
|Infrastructure||Jasper Palmer (he/him)|
|Grading||Aedan McCall (they/them)||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:
- write an event-driven program which reacts to user input and displays output using abstractions in a structured and maintainable way. These abstractions generally transfer to almost any other user interface toolkit.
- think about the design and implementation of novel interaction techniques such as voice based interfaces or augmented reality, in order to enrich the user experience.
- build inclusive and accessible user interfaces.
- implement implement user-centered features, such as Undo, that following well studied design principles that are applicable in any user interface.
- critique and study existing user interfaces using light weight informal and formal methods.
- communicate your findings through comprehensive reports as well as reflections on your learning
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:
- working in an Integrated Development Environment (IDE) that is more complicated than JGrasp
- Using a version control systems (Git)
- Reading and understanding library and toolkit documentation
- Reading and understanding a larger starter code base
- Reflecting on and explaining the coding work you have done
- Reading through assignment specifications which are “more complicated and less detailed” than a typical Introduction to CS assignment specification.
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.
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.
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!
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.
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
- This is the best way to ask questions about things like homework and programming
- 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 in person and remotely.
- If none of those times work for you, you can also discuss matters with us privately on the Ed discussion board. Using Ed notifies the whole course staff at once and is faster than email.
- If none of these work for you, you can send an email asking to set up an appointment.
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.
The goal of formative assessment is two fold:
- to help students understand “where they are” (what their strengths and weaknesses are) in their learning of the course material, and
- to help the course staff to immediately adress areas where students are struggling.
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.
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.
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 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.
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:
- Effort: Attending office hours, lectures, and sections. Keeping up with the discussion board. Demonstrating a good effort on practice quizzes.
- Participation: Asking questions in lecture and on the discussion board, voting on peer instruction questions, completing Section and Lecture exercises, interacting with TAs and other students.
- Altruism: Helping others in lecture, during office hours, and on the discussion board.
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:
- 35%: Assignments - Code
- 35%: Assignments - Reflections
- 20%: Final project (Design, implementation and reflection)
- 10%: Effort, participation and altruism (EPA), including completion of the lecture and section work and the Practice Quizzes
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:
- Each assignment is considered separately (i.e. code submissions are separate from reflections, which are separate from videos or checkpoints). Each item in the Assignments-code and Assignments-Reflections groupings on Canvas count as 1 assignment you can resubmit.
- You may not resubmit an assignment until feedback has been released for that assignment (typically about a week after the initial deadline)
- Resubmissions must be submitted through a provided form, and must be accompanied by a short
write-up describing the changes made. This will both support you in being deliberate about the
changes you make and ease grading of resubmissions by making the changes clear.
- Code will be turned in via our Edstem lessons
- Videos and Reflections will be sent in a private discussion board post. Please tag this with the Assignments->Resubmission Category.
- Reflections MUST be in .pdf format
- A maximum of one assignment can be resubmitted each week.
- Resubmission cycles will end on Sunday evenings at 11:59pm
- You may only resubmit an assignment once.
- You will have a limited time after you received feedback to do your resubmission for an assignment. Typically this will be 1-2 weeks with the exception of our last regular assignment (not the final project)
- We will not be accepting resubmissions on the final project.
- An assignment that has been found to involve academic misconduct may not be resubmitted
- As with regrades, when you resubmit an assignment, we will look at the entire assignment. Therefore, it is possible for your grade to go either up or down through this process. We recommend you carefully re-read the specification as well as our feedback before asking for the resubmission to be graded.
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.
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.
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 submission in the Ed lesson for that assignment.
- Send a private message on Ed to the instructors that you are requesting a regrade.
- Include a link to where you added your message and a written summary describing why your work should be reexamined.
- Reflections: We will use Gradescope to grade exams and manage regrade requests.
- Gradescope has a mechanism for managing regrade requests (instructions).
- 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.
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.
- You are not required to have your video turned on during remote OH or instruction. However, we do encourage you to have your video on, not to monitor you, but to help to create a sense of community in the classroom.
- Please keep your mic muted unless you’re asking a question
- Asking Questions
- To ask a question, you may use the raise hand feature in zoom, or type “hand” in the chat. When we can, we will call on you to unmute yourself 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.
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:
- Privacy: Instructors and course staff are expected to respect student privacy, and treat students fairly.
- Working Together: We will encourage students in this class working together, as long as you only turn in code that you implemented. See the [collaboration policies](academic-conduct.html#Collaboration Policies] section of the Academic Conduct page for more details on what constitutes proper or improper collaboration.
Wellness: It is very important to us that you take care of your mental health throughout the course.
Everyone on the course staff is available to chat, and you can always attend office hours for a
non-academic conversation if necessary. Beyond the course staff, the University of Washington provides
the following resources for mental health concerns. Your anonymity and privacy are protected.
- Please reach out to the UW Counseling Center for any help and concerns related to mental health (including increased stress), available to all UW students at no cost.
- If you are ever feeling uncomfortable and need to talk or are worried about someone close to you, it is highly recommended to visit the UW Heath and Wellness programs. They offer resources to students that can help.
- If you’re concerned for yourself or a friend, please call SafeCampus at (206) 685-7233.
Accessibility: If you have a temporary health condition or permanent disability (either mental health
or physical health related) that impacts your academic experience, please let us know how we can
accomodate you. You are NOT obligated to disclose any of these issues with the instrutor, only specify
if there’s any accommodations required.
- If there is something we can do to make your experience better, please let us know. We have attempted to make all the course materials accessible according to web standards but there are always things we may not have thought of.
- If you need any additional support, we are always happy to work with you directly or through DRS to make sure that the class meets your needs. If you need any adaptations for course materials (large font, pacing, image description, closed captioning), just let the instructor know.
- You may also want to contact Disability Resources for Students (DRS) at email@example.com if you have not already. 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.
- Religious Accommodations The UW’s policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations can be requested within the first two weeks of this course using the Religious Accommodations Request form on UW’s site.
- Extenuating Circumstances We recognize that our students come from a wide variety of backgrounds and can have widely-varying circumstances. Extenuating circumstances can include physical or mental health and wellness, work-school-life balance, familial responsibilities, military duties, unexpected and unavoidable travel, or anything else beyond your control that may negatively impact your performance in the class. If you have any unforeseen or extenuating circumstances that arise during the course, please do not hesitate to contact the instructor to discuss your situation as soon as possible. The sooner we are made aware of the situation, the easier it can be resolved and the more likely we will be able to offer flexibility. While we will make every effort to support and accommodate students experiencing difficulties, we are far more likely to be able to assist before a deadline has passed than after. Note that requests for extensions are generally not granted retroactively.
- Inclusivity: Our goal is to make CSE 340 a welcoming environment for all. We are working toward using a broad base of examples in our course material. Please let us know if you see an opportunity to improve our course materiale to be more representative of our student population. Additionally, if you experience interactions with anyone that are excluding or otherwise uncomfortable, please reach out to the course staff so that we can address the situation. Should you feel uncomfortable bringing up an issue with a staff member directly, there are a number of Community Feedback Mechanisms and Resources including the Anonymous Feedback form, but understand we can not respond to you directly if you use the latter. Responses, if possible, will be broadcast to the class as a whole or systematic changes to the class when necessary.
Sexual Harrassment: University policy prohibits all forms of sexual harassment.
- If you feel you have been a victim of sexual harassment or if you feel you have been discriminated against, you may speak with your instructor, teaching assistant, the chair of the department
- You can also file a complaint with the UW Ombudsman’s Office for Sexual Harassment. Their office is located at 339 HUB, (206)543-6028. There is a second office, the University Complaint Investigation and Resolution Office, who also investigate complaints. The UCIRO is located at 22 Gerberding Hall.
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:
- You are expected to be honest and forthcoming in your communications.
- Your work should be appropriate for a school environment.
- You are expected to turn in your own
work that demonstrates your understanding
- You may not copy your code directly from another student or any other source on the internet.
- You will be asked, in each reflection, to acknowledge any help you received from another person or internet resource. Additionally it is always good practice to also cite your sources with a comment in your code as well.
- 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.
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.