Here are some topics that I expect will be covered during this course. The exact list will be adapted based on the interests of the attendees in the course.
- How to Evaluate User Interface Software Tools
- Why are user interfaces hard to design and implement?
- Classifications of Types of User Interfaces
- Classifications of User Interface Software Tools
- Basic Computer Graphics
- Output Models: Structured Graphics; Object-Oriented Techniques
- Input Models: Supporting User Actions
- Event Models
- Garnet/Amulet Model
- SubArctic's Input Model
- Input Recognition from Sensors
- Software Architectures for User Interface Software
- Model-View-Controller
- Lexical-Syntax-Semantics
- Seeheim Model
- Toolkits: intrinsics, callbacks, resources, widget hierarchies, geometry management
- Constraints
- Historical UIMS Techniques: Menu trees, transition networks, grammars, Event Languages, HyperTalk, production systems, Declarative Languages
- Model-based tools: Creating the UI Automatically
- Interactive Tools: Prototypers (HyperCard, Director, Visual Basic, Flash Pro), Interface Builders, Sketching Tools
- Demonstrational Tools
- Component Techniques: Andrew, OLE, OpenDoc, Java Beans, Service-Oriented Architecture (SOA)
- Plug-In architectures (Photoshop, Illustrator?, Mozilla, Office, Eclipse, COM, etc.)
- User interface software for particular domains:
- Mobile Applications (Smartphone & Tablets): Frameworks / SDKs Newton, Palm, Windows Mobile, iPhone and Android
- Web Architectures: distributed user interfaces, client-side and server-side toolkits
- Cross platform approaches, various screen resolutions, supporting multiple platforms/devices using the same client code
- Games & 3D, physics engines (Unity3D, etc.)
- Gestural Input in 2D, 3D and Multi-Touch, Handwriting recognition
- Ubiquitous Computing, Context Awareness and CSCW tools
- Physical objects Toolkits
- Sound and Speech User interfaces: Input and Output, Multi-Modal architectures