Iterative Design of an Interactive Interface

Important milestones (see your schedule for actual dates)

Organization. Keep your project in a 3-ring binder, beginning with an assignment grading sheet, with index tabs marking the sections; and hand in the entire portfolio at each checkpoint.

Overview. The term project is a major portion of CPSC 481 (worth 25%). Its main purpose is to give you hands-on experience applying some of the design concepts you have learnt in class. Secondary purposes include learning how to storyboard, learning an interface builder, writing a minimalist user manual, and learning how to program a window-based interface.

The project is executed in two parts: design and implementation. Because of equipment and time limitations, the project is limited to what can be accommodated on a modern bit-mapped workstation using the TCL/TK interface toolkit. (You may not use other platforms; sorry.)

General comments. You will select a 'simple' but interesting interactive system that represents an application for some user, or makes an existing application more effective in use. Your goal will be to produce a system that is usable with minimal training by someone who is familiar with computers and interactive window systems. A project should be chosen that maximizes the opportunity for you to use the techniques taught and that minimizes unnecessary coding of non-interface aspects.

Work in groups of three. Groups of four are usually too difficult to coordinate, while a single person working alone does not benefit from group discussion.

It is sometimes possible to combine work on two course projects (if the course instructors permit it). For example, one year a group did an interactive graphics slide-making program. The user interface was marked for this course, and the graphics programming for the Graphics course.

Grades are based on the quality of the written submissions and the quality of the interactive interface, not on the complexity of the database or underlying application. Remember that you are creating a full horizontal prototype, with enough there to show the 'vertical' flavor. You can do this by working in a simple application domain or by hooking into existing software. Alternatively, you can create a very limited real system or simulation that supports the interface enough to give a flavor of what it would be like to interact with the real thing.

Choosing a project. Chose your own project. The best projects are often ones that students either had a direct personal interest in, or were motivated by real needs of people they know (e.g. friends in business). If you are really stuck, a few possibilities are listed below.

  1. Imagine your computer has full access to your telephone system, a phone book, and personal address lists. What kind of creative ways could you develop to support a person's use of the telephone?
  2. Library: Searching for books. If you try out the University of Calgary library DOBIS system, you will see that it is pretty crude and unforgiving. Redesign the interface so that it is oriented towards the typical needs of students and researchers (not librarians!).
  3. Court booking. The University of Calgary Physical Education building has an on-line facility for booking squash and racquet ball courts. Investigate its use and its failures (as well as successes) and redesign its interface so that the typical court user can schedule and cancel courts easily and quickly.
  4. Construct a dialogue to help control a pipeline or other process. Ideally, a mimic diagram would be required.
  5. Homes are now being built that have all facilities under computer control (e.g. lights, heat, kitchen appliances...). Build a home interface that will allow people to schedule the turning on and off of lights, heat, etc. This is not as simple as it seems!
  6. Go to the mall and pick up a free real estate guide. Look at the typical ads in it, and then design an on-line version of a real estate guide, where people can specify area of town, size of house, kinds of facilities, cost, etc. Some real estate people have systems like this: you may want to take a look at them.
  7. Build a groupware system based on the GroupKit extension to TCL/TK (check with the professor for details).

WARNING: Don't be too ambitious! I am more interested in seeing a well thought out interface to a simple system than a second-rate interface to a really complex system. Check with your teaching assistant if in doubt.

The Paper Storyboard, Outline, and Design Rationale. You are urged to start thinking about how to implement the system while doing the design, and should have started in earnest by the time the design documents are submitted. Note that your design will be affected by the implementation platform you will be using.

  1. Select an application domain
  2. Prepare a 1-2 page (800 words max!) outline of the system you hope to design, with a brief summary of:
  1. Brainstorm interface ideas and create a few paper-based storyboards (to reduce your commitment to any particular design, they must be paper-based). After getting 'user' reaction to the storyboard, revise it.
  2. A 1-2 page design rationale that explains how your design fits the task and the users

The Screen Snapshots plus Re-design Rationale

  1. Prototype the interface (with no functionality) with TCL/TK. Again, get 'user' reaction to it. Take screen snapshots (eg XV, XWD & XPR)
  2. Write a 1-2 page rationale of why the design changed.

The System. You will now implement the interface you have designed, or at least a substantial part of it, in TCL/TK. 'Substantial part' means that examples of the more interesting features (screens, error messages, handling of unexpected input, defaults, robustness, ...) should be demonstrable, even if there are only 'stubs for many of the possible sub-tasks.

Beware of the effort needed to build a system that depends on a complex database, or requires new system facilities to be implemented, etc. The time spent on this should match that of a project with 25% (how much time did you spend studying for your mid-term)? However, people's working habits vary, and poor organization can severely limit the effectiveness of time spent, especially when working in a group. The best groups start early, plan activities, divide the work logically, and communicate well.

This part of the project is graded on the basis of a demonstration at the end of the term. A timetable will be posted and you can book demonstration slots. Groups must identify themselves in booking a slot, and will be required to stick to the booked time unless there is a very pressing reason (e.g. documented medical). I will also use this time to explore each student's involvement and knowledge concerning what has been done. Credit is based on creativity, robustness, how well your system has been implemented according to the interface design principles, and in terms of the overall 'feel' and 'ease of use.' It is permissible to have some sub task selections return some kind of 'This facility is still under development' message without penalty. Some credit given will be related to the choice of application and dialog style, as some are clearly more difficult or innovative than others.

You are emphatically cautioned against biting off more than you can chew! A small project that offers scope for a reasonable breadth of design, and that has enough carefully implemented to illustrate how you attended to the design principles taught in class, will score much higher than an ambitious project that does not offer scope for application of the principles and/or illustrates only a restricted range of them. Clarity and good organization in the design documents are also considered important in assessing credit.

The minimalist manual. This is a minimalist manual! It should be short, concise, and be something that the user will actually read. It is not a reference manual. I will tell you how to write these manuals in class. Quality, not quantity, is sought. Maximum length of manual is 10 pages.

Final design critique. You must also write a 1-2 page final design critique of your system, including what parts of the design works well and what still needs improvement.