User Interface: Program that allows two or more entities to exchange information. *Typically entities are computer and human Graphical User Interface: An interface in which a computer application displays some of its information graphically Direct Manipulation User Interface: An interface in which a computer application provides concrete representations for objects and users can directly manipulate them. By doing so, the user is able to change the state of the application. Examples of Direct Manipulation Interfaces: Display editors, video games, operating systems (Mac, Windows), spreadsheets, spatial data management, cad/cam, simulations, controls (e.g., for a robot or machine). What the course covers: * construction of direct manipulation, graphical programs--much like a programming languages course What the course does not cover * graphical design--this is the province of graphics artists * usability-- usability activities include (but are not limited to): task analysis, competitive interface analysis, setting usability goals, participatory design, user interface coordination and standards compliance, heuristic evaluation, interface mockups and prototyping, user testing, iterative design, field studies, interviews, analysis of feedback from user sites This course is fundamentally a principles of programming languages course for creating highly interactive applications Features that Direct Manipulation programs require that conventional languages typically lack * graphics * rapid prototyping * multiprocessing capabilities * object-oriented programming * incremental state changes * user controls interaction rather than program Is this a problem? Yes--many software vendors have missed announced product delivery deadlines by a year or more. *The trend is toward ever-increasing complexity, which means products take more and more time to develop *Limitations of existing tools Programming Techniques discussed in this course * Object-oriented programming (more appropriate modeling paradigm- entities in applications naturally correspond to objects and it is distributed) * Constraints (for incremental computation) * Incremental Display Management * Input Handling * High-level, visual tools * Threads for animation and multi-user applications MVC model * Motivation: Separate application from user interface * Model: Embodies the application semantics * View: Graphical presentation of the model to the user * Controller: Handle input events and interaction between the application (model) and the user (view) * Model represented by OO-programming, constraints * View represented by OO-programming, constraints, display management * Controller represented by input handling