CS594--Graphical User Interfaces

Brad T. Vander Zanden--Spring 1997

General Information

Topics To Be Covered

The course will be a survey of tools and techniques for constructing highly interactive, graphical user interfaces. The emphasis will be on four major areas:

  1. Object Oriented Programming: Object-oriented programming is a buzzword that is frequently thrown around these days. We will discuss the major aspects of object oriented programming, including inheritance, data encapsulation, and polymorphism, and discuss how they can simplify the task of creating a user interface.

  2. Spreadsheet-Style Programming: A spreadsheet allows equations to be attached to variables (cells). An equation may reference other variables (cells). When the user changes the value of a variable, all the equations that depend on that variable are reevaluated in the appropriate order. This spreadsheet-style paradigm is useful for specifying graphical relationships between objects, such as keeping a piece of text centered within a box. It is also useful for scheduling and executing the numerous side-effects that an operation may have on an application. We will discuss how aspects of the spreadsheet paradigm can be applied to graphical interfaces. We will also discuss algorithms for efficiently scheduling and executing equations.

  3. Display Management: When the user manipulates objects in a user interface, both the interface and the application typically provide various types of pictorial feedback. This feedback may "damage" various areas of the screen, and may require that the graphical objects that inhabit these areas be redrawn. We will discuss efficient algorithms for incrementally detecting and updating damaged areas of the display.

  4. Input Handling: The user interface must translate low-level input events, such as keyboard presses or mouse presses, into high-level behaviors that an application understands (e.g., delete an object, move an object, etc.). We will discuss models and algorithms for handling input. We will also explore the concept of interaction techniques (combinations of graphics and behaviors that are reused in many interfaces).
The course will also cover graphical interface design and usability at a high-level. Each week you will be assigned one chapter from the text book. We will spend a portion of each class discussing the material from the chapter and seeing how it applies to your project design.


Programming Assignments

There will be a number of programming assignments throughout the semester to give you familiarity with both the algorithms presented in class and with object-oriented programming. Although subject to change, I currently envision three programming assignments, one related to learning object-oriented concepts, one related to constraint satisfaction (to be done in Python), and one related to display management.


You will be expected to design and implement an interactive, graphical application based on the concepts and principles presented in class. The project is broken into five assignments, the last four of which will be graded. The first assignment will ask you to design an interactive, graphical application of your choice but will not be graded. The remaining four assignments will cover creating a "sketchboard" of your graphical interface, building a prototype of your interface in Python, refining your prototype in Python, and then building the final version of your interface in C++.