Concepts and methods for the architectural design of large-scale software systems. Fundamental design concepts and design notations are introduced. Several design methods are presented and compared, with examples of their use. Students participate in a group software design project. Formal mechanisms for specifying, validating, and verifying software systems.
Students analyze, design, implement, and manage a software system project.
Students work in teams to develop or modify a software product, applying sound principles of software systems engineering. Both industrial and academic standards are used to assess the quality of the work products. See CS 631. Principles of user interface design, development, and programming. Topics include user psychology and cognitive science, adaptive user interfaces, icon and window design, command language design, user guidance systems, and collaborative working.