One of the issues which is critical in the acceptance of a piece of software is the user interface to the program. This course will discuss both the techniques for analyzing the interface requirements of the intended user population and techniques for computationally realizing these requirements.