05-830, User Interface Software, Spring, 1997 

Instructor: 	Brad Myers  <bam@cs.cmu.edu>
Number: 	05-830 (offered by the Human Computer Interaction Institute) 
Time: 		MW 9-10:20 
Room: 		To Be Determined 
Credit: 	1 CS PhD Elective Core Unit, APPROVED 
		12 University Units 

More Information: http://www.cs.cmu.edu/~bam/uicourse/uisoftwarecourse97.html

Abstract: 

After a quick overview of the design of user interfaces, we will
concentrate on how to implement the chosen design.  Particular
emphasis will be placed on user interface software tools, such as
windowing systems, toolkits, interface builders, prototypers, and
advanced user interface development environments. In particular, the
course will cover MS Windows, OLE, MFC, Macintosh Toolbox, MacApp,
PowerPlant, OpenDoc, X/11, Motif, Visual Basic, Director, HyperCard,
Java AWT, Java Beans, and various research systems like Amulet,
InterViews, Fresco, and ArtKit. Each student will implement small
project on at least 4 different user interface tools during the
semester. Students will study and use the "usability engineering"
development methodology and will compare and evaluate the various
tools for ease of learning and effectiveness.

Unlike the previous offering of this course, there will not be a final
group project. Instead, the students will individually each implement
a much smaller test program (about 1000 lines) using four different
user interface tools, so the students can get a better appreciation of
the differences among tools. Students will all use an interactive
prototyping tool first, like HyperCard, Director or Visual Basic. Then
each student will implement the same interface in three other
"high-level" tools, which will be chosen so that the full range of
tools is covered by members of the class.

This is primarily a MS and PhD level course but some advanced
undergrads may be admitted with permission of the instructor. No prior
HCI experience is required. PhD students in the class will help
present the course material by investigating and lecturing on various
toolkits.

Prerequisites

15-212 or considerable programming experience. Experience with
object-oriented programming and/or software engineering is
desirable. Prior experience with user interface design is NOT
required.

Required text

Jakob Nielsen. "Usability Engineering". Boston: Academic Press,
Inc. 1993. ISBN 0-12-518405-0.

Recommended texts:

Donald A. Norman, "The Design of Everyday Things". New York:
Doubleday, 1988. ISBN 0-385-26774-6 (paperback) $12.95

Brad A. Myers, "Languages for Developing User Interfaces", Wellesley,
MA (289 Linden Street, 02181, 617-235-2210): A.K. Peters, LTD,
1992. ISBN 0-86720-450-8. $49.95

Grades

The grades will be based on homeworks, a midterm, and final exam. 

 2 regular homeworks (5% each) 		10% 
 4 implementation Homeworks (15% each) 	60% 
 MidTerm 				10% 
 Final Exam 				20% 

Tentative Course Schedule:

    Introduction

    1. Why are user interfaces important and hard to design and implement 

    User Interface Design

    2. UI Design: UI Guidelines 
    3. UI Design: Dimensions of UI variability Styles of User Interfaces 
    4. Usability Engineering: Iterative Design Process 
    5. Usability Engineering: Testing methodologies 
    6. Usability Engineering: Evaluating the Tools 
    7. Examples of Good and Bad User Interfaces 

    User Interface Implementation

    8. Overview of UI Software and Tools 
    9. Rapid Prototyping Tools: HyperCard, Director, Visual Basic
		Interactive Tools: Interface Builders   
    10. Software Organization: Lexical-syntax-semantics, Seeheim
		Model, MVC, Object-Oriented Programming for UIs 
    11. Constraints 
    12. In-class presentation of 1st implementation 
    13. Midterm: in class test 
    14. Toolkits: intrinsics, callbacks, resources, widget
		hierarchies, geometry management  
    15. Toolkits: tcl/tk, Java awt 
    16: OO Frameworks: MacApp, Microsoft Foundation Classes,
		CodeWarrior PowerPlant  
    17. Basic Computer Graphics 
    18. Other Output Models: structured graphics; display postscript 
    19. Window Manager Input Models 
    20. New toolkit input models: Interactors, Command Objects 
    21. UIMS Techniques: Menu trees, transition networks, grammars 
    22. UIMS Techniques: Event Languages, HyperTalk, production
		systems, Declarative Languages  
    23. 3D interfaces 
    24. MultiMedia 
    25. Model-based tools: Mickey, UIDE, Humanoid, MasterMind 
    26. Component Techniques: OLE, OpenDoc, Java Beans 
    27. Demonstrational Tools 
    Final Exam 
