UML metamodels and constraints, model-driven engineering, UML-to-source-code mappings, object-oriented refactorings, design patterns, object-oriented frameworks and plug-ins, architectural styles, layered designs, map-reduce parallel software architectures, and service-oriented computing. Three lecture hours a week for one semester. Computer Science 373S and 378 (Topic: Software Design) may not both be counted. Prerequisite: Computer Science 429 (or 310) or 429H (or 310H) with a grade of at least C-.

Undergraduate Program