17-655 Architectures for Software Systems
Successful design of complex software systems requires the ability to describe, evaluate, and create systems at an architectural level of abstraction. This course introduces architectural design of these complex software systems. The course considers commonly-used software system structures, techniques for designing and implementing these structures, models and formal notations for characterizing and reasoning about architectures, tools for generating specific instances of an architecture, and case studies of actual system architectures. It teaches the skills and background needed to evaluate the architectures of existing systems, and to design new systems in principled ways using well-founded architectural paradigms.
Prerequisite: Project-oriented software development experience
Schedule: Spring semester