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.



  • 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)
Design patterns (4 hours)
  • Model-view-controller and related design patterns for designing user interface architectures
Components and interactor trees (4 hours)
  • How interfaces are constructed from components
  • Construction of an interface from interacting components
Algorithms for user interaction (4 hours)
  • Design and implementation of algorithms for interactive systems to handle undo, layout, multithreading, and data transfer (e.g., clipboard, drag-and-drop)
2D graphics (4 hours)
  • 2D graphics algorithms for rendering and interaction with graphics and text
People and the human-machine interface (6 hours)
  • 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)
UI specification (4 hours)
  • Methods for specifying the visual and interaction design of user interfaces
Special topics (6 hours)
  • 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