Computer Science 295 (Special Topic): Human-Computer Interface Design

Spring 1999

Instructor: Nathaniel S. Borenstein
Robert Noyce Visiting Professor


For 2 credits: none.
For 4 credits: CSC 152 or equivalent

Click here to see homework assignments

Course Time & Place

I will be on campus on the following dates:

January 25-27, March 1-5, and April 25-May 14.

The course is officially scheduled for M/W/F 11-11:50. However, since I'm out of town much of the semester, we will generally continue the class through the lunch hour and "brown bag" our lunches. Thus you should think of the class as running from 11 to 12:45 on the days we can actually meet.

During the other parts of the semester, the course will be conducted by independent study and email discussion.

The course meets in SCIE 2435.

Course Description

This course is intended to give students both a theoretical understanding of, and practical experience with, the art of designing computer systems that are easy for non-specialists to use. There will be three main categories of course assignments: readings, evaluations, and projects. Students who are taking the course for 2 credits will have a small number of non-programming projects. Students who are taking the course for 4 credits will also have a set of programming projects, which will require learning the Tcl/Tk programming language.


Despite years of effort, user interface design remains at least as much an art as a science. No textbook tells precisely how to design good user interfaces, but there are quite a few good books and articles in which successful designers reflect on their own experience. These readings cover such topics as task analysis, initial design, prototyping, evaluation, and iterative design. The class will draw on a significant number of such sources as starting points for class discussion and for the evaluations and projects.


Users interfaces surround us all the time, from complex software packages to parking meters, and we often take them for granted. To become more conscious of the design decisions implicit in the artifacts that surround us, class assignments will include detailed evaluations of a number of common devices and software programs.


In the course project, each student or group of student will design and build a useful and usable piece of prototype software with a graphical user interface. We will use the Tcl/Tk software platform for GUI development. Tcl is a simple scripting language, and Tk is an associated graphical tool kit. Together they provide a substrate for rapid GUI prototyping. Although student projects will primarily use this environment, the readings will expose the students to a wider away of alternative tools.

Project topics may be drawn from the students' own research interests, or from a list of ideas to be provided by the instructor. Project scope may range from new widget inventions to whole application systems.


Textbooks should be available at the college bookstore.

Required for 4 credit students:

  • Tcl/Tk for Real Programmers

    Optional for 4 credit students:

  • Tcl and the Tk Toolkit

    Required for all students:

  • Programming As If People Mattered
  • The Design of Everyday Things
  • The Art of Human-Computer Interface Design

    Course Organization and Structure

    Because I will not be here on a continuous basis, the timing of the work will be a bit different from most other classes. In particular, since he will be on campus during the first week of the semester and then gone for several weeks, there will be readings assigned before that first week, which will be assigned before winter break to allow students time to read them in advance.


    From here on, I think it is PARTICULARLY out of date. Ignore all dates!!!!! This is written for another version of this class, in which *everybody* is a programmer.

    During the month of February, students will be expected to correspond with me by email, and to participate in discussions via a class mailing list. Specific milestones to be achieved during that time will include:

  • February 1-8: Fundamentals of Tcl programming (programming homework)
  • February 8-15: Group evaluation of a common user interface
  • February 15-March 1: Individual user interface selection and evaluation
  • February 15-March 1: Selection of programming project groups & topics

    I will return to the campus for a week on March first. During that time the class as a whole will meet for a few lectures, and students will also schedule individual meetings to discuss their projects and plans for the rest of the semester. The class will then resume a "virtual" existence until late April, focusing on the actual implementation of the projects, with a few milestones:

  • March 15: Project outline & division of labor
  • March 29: Delivery of initial prototype
  • April 5: Evaluation of initial prototype(*)
  • April 19: Delivery of second version
  • April 25: Evaluation of second version(*) (*)Each project group will be assigned the project of another group to evaluate in detail.

    I will return to Grinnell on April 25, and will remain for the rest of the semester (3 weeks). During that time, there will be additional readings, lectures, and class discussions, and students will have the opportunity to present their projects to the class.

    Course Grading

  • 25% Participation in the class and mailing list discussions
  • 35% Homework assignments
  • 40% Final project

    Back to NSB Noyce Professorship home page