At the end of this course, the student will be able to:
- recall the names and classify GoF design patterns
- select, justify and apply software design patterns in appropriate context
- describe and compare design patterns in terms of their problem context, solution structure, consequences
- recognize design problems in object oriented software
- know basic object oriented design principles
- able to restructure the design/code to some extend