Upon successful completion of this course, students should be able to:
- Understand the fundamental principles of software design, including modularity, cohesion, and coupling.
- Apply common design patterns to solve recurring software design problems.
- Create and interpret UML diagrams to model software systems.
- Develop software systems that are maintainable, extensible, and adaptable.
- Evaluate and improve existing software designs using design heuristics and refactoring.
- Collaborate effectively within design and development teams.
- Communicate design decisions and rationale clearly.