About this course: Design problems in applications can be resolved through design patterns commonly applied by experts. This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, learners will gain a foundation for more complex software applications. Finally, learners will identify problematic software designs by referencing a catalog of code smells. Learners will be challenged in the capstone project to critique an existing Java application for code smells. They will redesign the application to combine design patterns such as within the Model-View-Controller (MVC) design. After completing this course, a learner will be able to: • Demonstrate how to use design patterns to address user interface design issues. • Identify the most suitable design pattern to address a given application design problem. • Apply design principles (e.g., open-closed, dependency inversion, least knowledge). • Critique code by identifying and refactoring anti-patterns. • Apply the model-view-controller architectural pattern.