Software Design
This course provides an overview of the software design field: software design overview, software design process, a survey of software design method (such as structured design methods, object-oriented design methods, concurrent design methods), design reviews, as well as discussing current topics such as aspect-oriented programming, refactoring, and design patterns. Testing and validation techniques are emphasized through the course. Program designs are developed and validated throughout the course. Readings and summaries of current and seminal journal papers and texts are required.