Examination of reflection, UML, metamodels and constraints, 3-tiered architectures, model-driven engineering, UML-to-source-code mappings, classical and ad hoc refactorings, event-based programming, design patterns, object-oriented frameworks and plug-ins, architectural styles, layered designs, map-reduce parallel software architecture, case studies, 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. Offered on the letter-grade basis only. Prerequisite: Computer Science 373 with a grade of at least C-; and credit with a grade of at least C- or registration for Computer Science 347 or 375.

Undergraduate Program