After finishing the course, student should demonstrate the following skills:
1) Ability to differentiate between different OO design patterns and recognize the contexts of their usage.
2) Ability to provide high quality reusable OO system designs using different OO design patterns.