Revised June 4, 2014
CS 349: User Interfaces
Watch a video introduction to this course on YouTube.
General description
This course introduces contemporary user interfaces, including the basics of human-computer interaction, the user interface design/evaluation process, and the architectures within which user interfaces are developed. Students implement and evaluate portions of typical user interfaces in a series of programming assignments.
Logistics
Audience
- CS major students interested in modern user interfaces
Normally available
- Fall, Winter, and Spring
Related courses
- Predecessors: CS 241 and (MATH 115 or 136/146)
- Successors: CS 449
For official details, see the UW calendar.
Software/hardware used
- C++
- Java
- Linux
- Virtual machines (such as VirtualBox)
Typical reference(s)
- D. Olsen, Building Interactive Systems, Course Technology, 2009
Required preparation
At the start of the course, students should be able to
- Develop object-oriented software in languages such as C++
Learning objectives
At the end of the course, students should be able to
- Design, implement, and test interfaces for a variety of targets, such as Android, Java (e.g., with Java Swing), or X Windows
Typical syllabus
Event architecture (4 hours)- Abstractions for user input focusing on the event abstraction
- Lowest level user interface control structure
(the event loop with message passing)
- Model-view-controller and related design patterns for designing user interface architectures
- How interfaces are constructed from components
- Construction of an interface from interacting components
- Design and implementation of algorithms for interactive systems to handle undo, layout, multithreading, and data transfer (e.g., clipboard, drag-and-drop)
- 2D graphics algorithms for rendering and interaction with graphics and text
- Theory and methods for designing interfaces to match human abilities and needs (specific topics include perception, visual design (e.g., Gestalt principles), input and output devices, accessibility, and internationalization)
- Methods for specifying the visual and interaction design of user interfaces
- Past, present, and future of interactive computing and implications for the design and implementation of user interfaces
- Design for specific platforms (e.g., mobile, web), touch and multitouch interaction, and scripting facilities