Current Catalog Description

Principles and practice of creating effective human-computer interfaces. Design and user evaluation of user interfaces; design and use of interface building tools. Programming projects using a variety of interface building tools to construct and evaluate interfaces. Prerequisite: CSE 017 or consent of the instructor.

Instructor: Eric Baumer (Fall 2020)




Jenifer Tidwell, "Designing Interfaces:Patterns for Effective Interaction Design", O'Reilly Media, 2005

Steve Krug, "Don't Make Me Think: A Common Sense Approach to Web Usability", New Riders, 2005


Students will have:

  1. An understanding of principles and practice of creating effective human-computer interfaces.
  2. An ability to use a variety of interface building tools to construct application interfaces and web pages.
  3. Ability to perform user evaluations and usability testing of user interfaces.
  4. Ability to use design patterns and standard interactive components to create effective user interfaces.
  5. Ability to write substantial interactive applications that have interfaces with a consistent look and feel.


CSE 331 substantially supports the following program outcomes:

  • An ability to apply knowledge of computing and mathematics appropriate to the discipline.
  • An ability to analyze a problem and identify and define the computing requirements appropriate to its solution.
  • An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
  • An ability to use current techniques, skills, and tools necessary to computing practices.
  • An ability to apply design and development principles in the construction of software systems of varying complexity.

Prerequisites by Topic

  • Fluency in writing code in C or C++
  • Knowledge about HTML
  • Medium scale software design and implementation

Major Topics Covered in the Course

  • Usability of interactive systems
  • Guidelines, principles, and theories for user-centered interface design
  • Interface building software tools
  • Common user behavior and usage patterns
  • User interface system architecture
  • Event handling, actions and commands
  • Window and layout management
  • Navigation
  • Menus, Form Fillin, Dialog boxes, Icons
  • Design patterns for trees, charts and information graphics
  • Interaction devices
  • Collaboration, inter-application communication
  • Information search and visualization
  • Balancing function and fashion
  • Web usability, web interface building tools

Assessment Plan for the Course

The students are given two homework assignments, two mid-size to large-size design and programming projects, a midterm exam, and a final exam. The homework assignments aim to deepen the students' understanding of good interface design principles. One team project asks students to evaluate an existing user interface (e.g. news web sites, e-commerce sites, interactive applications) and write a report on their expert review and usability testing results. Another project is for each team to design and implement a front-end user interface, using an open-source software as the backend,; students need to apply the principle of iterative design to develop several prototypes, before completing the final high-fidelity interactive application. I track the performance of the students on each homework assignment, each design and programming project, and each question on the midterm and final exam.

How Data in the Course are used to Assess Program Outcomes: (unless adequately covered already in the assessment discussion under Criterion 4)

Each semester I include the above data from the assessment plan for the course in my self-assessment of the course. This report is reviewed, in turn, by the Curriculum Committee.