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
- Prerequisites
- Course Structure
- Required Course Work
- Grading
- Remote Instruction
- Class Expectations and Academic Conduct
- Academic Conduct
- Indigenous Land Acknowledgement
Class Times
Weeks Remote vs in Person
See Canvas for all zoom meeting links, and see the Remote instruction section of this document for more details.
- Week 1 will be held online on Zoom. This includes class sessions, quiz sections,and office hours.
- Week 2 will be held online on Zoom for OH and Section. Lecture, as long as Lauren is healthy, will be zoomed in from our classroom, MGH 241. You are welcome to join in the classroom, masked and socially distant, for an attempt at a hybrid approach to class.
- Week 3 - all parts of the course will be held remotely through Zoom (i.e. no hybrid from the classroom). See the discussion board for more information.
- Week 4 - will be held online on Zoom for OH, Section, and Monday’s Lecture. Wednesday and Friday’s lecture, as long as Lauren is healthy, will be zoomed in from our classroom, MGH 241. You are welcome to join in the classroom, masked and socially distant, for an attempt at a hybrid approach to class.
- Week 5 and beyond: we are returning to in person
Schedule:
Click here for a visual schedule of class times and office hours times and locations .
Class Time: | M/W/F 12:30pm - 1:20pm PDT | MGH 241 |
Lab Times: | AA: Th 12:30 pm PDT | MOR 225 |
AB: Th 1:30 pm PDT | MOR 221 |
Course staff
Instructor
Lauren Bricker (she/her) Office Hours: 2:30-3:30 M/W |
TAs
Section AA | Thevina Dokka (she/her) | Henry Heino (he/him) | ||
Section AB | Kellie Gui (she/her) | Jacob van’t Hoog (he/him) | ||
Section support/Grading | Jay Lin (they/them) | |||
Infrastructure | Jasper Palmer (he/him) |
(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.
Prerequisites
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.
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
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. 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.
Lab
On Thursdays, you will participate in a weekly lab, held at either 12:30 or 1:30 pm 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.
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:
- 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
responding also.
- 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.
Assignments
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.
Formal Assessments
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.
However, 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 your effort on each completed practice quiz. Practice quizzes will be considered as part of your participation grade.
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, 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).
Grading
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 Practice Quizzes
Late Days
You have 5 free late days which will automatically be applied until they run out.
Most assignments will allow up to 2 late days before the assignment is locked, after which you will receive a zero on that assignment. The exeption is for where the nature of the assignment necessitates that the code (and possibly a video) are due before the rest of the assignment (evaluation and reflection). In those cases you will be allowed to use up to 2 late days for the coding portion, and up to 1 late day for the reflection. Note: some assignments a checkpoint approximately halfway through the time you are to be working on it. You may not use any late days on checkpoints.
Once you run out of free late days, each day beyond the initial due date (up to the lock date) that your assignment is turned in will incur a 10% penalty on the assignment that was due. This means, if you are out of late days and turn an assignment in late, you would lose up to 20% on your code and 10% on your report/reflection.
If you need to turn in an assignment late under special circumstances, please email the instructor to schedule a meeting for PRIOR to when the assignment is due. During this meeting we will discuss the circumstances for this ask and determine if extra time is warranted.
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.
- 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.
Remote Instruction
Zoom
All remote sessions for this course are scheduled to run synchronously via Zoom. These Zoom sessions will be recorded and will be made available as soon as possible after the class session. We will do our best to capture the presenter’s audio, video and computer screen. Student audio and video may 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
- Not share their computer audio or video during their Zoom sessions
For more details on how to use Zoom in this course, please see our documentation page.
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.
- Video:
- You are not required to have your video turned on during lecture except during group activities in breakout rooms to facilitate discussions.
- If possible you should have your video on at all times during lab. This is not to monitor you, but to help create a sense of community in the classroom.
- Audio
- 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. The instructor or moderator 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.
- Activities
- There will be individual and group based activities which you are expected to participate in. Please contact the instructor if you are unable to participate in these activities synchronously due to your remote living situation.
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 uwdrs@uw.edu 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.
- 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 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:
- 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 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.