Schedule and Readings

The final schedule and readings will be available soon. Here is the tentative list of topics:

  1. Introduction to Course; What are "Software Structures for User Interfaces"; and Why are user interfaces hard to design and implement?
  2. What is "User Interface Software", Overview of UI Software and Tools
  3. Review of HTML and CSS
  4. Review of JavaScript
  5. Input 1: Conventional Input Models for Handling Input Events
  6. Input 2: Declarative input models; "Interactor" (Behavior) Objects in Garnet and Amulet and
  7. Output 1: Basic 2D Computer Graphics
  8. Output 2: Graphics Models: Structured Graphics; Multiple Hierarchies; Object-Oriented Techniques
  9. UI Software Models: Lexical-Syntax-Semantics, Seeheim Model, MVC, Design Patterns, State Diagrams
  10. UI Implementation Concepts: Callbacks, Resources, Widget Hierarchies, Geometry Management
  11. React for JavaScript
  12. Some Other Web Toolkits - jQuery, AngularJS, Vue, Bootstrap, etc.
  13. Evaluation of APIs and UI Tools, API Usability, Cognitive Dimensions
  14. Command Objects & Support for Undo
  15. Toolkit support for Gestural Input Techniques, Handwriting Recognition
  16. Constraints and Data Bindings
  17. Connecting to the backend - Web Services and Databases
  18. Toolkits for building speech/conversational/chatbot User Interfaces, and Visualizations
  19. Interactive Tools: Prototypers (HyperCard, Director, Visual Basic, Balsamiq), Interface Builders, Sketching Tools
  20. Software Engineering for UIs: How to create high-quality UIs in the context of Agile and other software development processes
  21. Simple User Interface Toolkits and End-User Programming for UIs; Low-Code / NoCode
  22. Toolkit support for Assistive and Accessible Interfaces; Web Accessibility
  23. Toolkits for 3D Programming and the UIs of Games