C S 392F C S 392F. Automated Software Design. 3 Hours.
Model-driven engineering; UML metamodels and constraints, model transformations, software product lines, feature models, feature modularity, feature algebras, feature interactions, multi-dimensional separation of concerns, design-by-transformation, parallel software architectures, correct-by-construction, architecture refinement, optimization, and extension, program refactorings, design patterns, refactoring scripts, category theory, functors, commuting diagrams. Three lecture hours a week for one semester. Computer Science 392F and 395T (Topic: Feature-Oriented Programming) may not both be counted. Prerequisite: Graduate standing, and a basic knowledge of Java, compilers and grammars, and object-oriented design methods.