Software design is a highly complex and demanding activity. Software designers often work in a volatile environment in which both the business requirements and the technologies can change. Under such an environment, the ways design decisions are made can greatly influence the outcome of design.
In real life, it seems that most software designers make design decisions based on personal preferences and habits, applying some forms of reasoning and ending up with varying design productivity and quality.
This certificate will discuss the purpose and role of design in the overall process of software development, the semantics of object-oriented languages, and the strengths and limitations of the object-oriented approach. Course topics covered will include: domain modeling, design patterns, refactoring, error handling, and cross-cutting concerns.
- Increase the overall programming competencies of software developers who write code in a variety of languages such as .C#, C++ and Java
- Develop a strong sense of design quality
- Understand the process of design, through example, discussion, practice, and introspection
- Develop fluency in object-oriented design