The course looks at the main tools of modern object-oriented software development. The main tools are: design-support tools (principally design patterns) and programming-support tools (principally IDE). This course has a strong emphasis on project design and programming using design patterns. Each pattern represents a best practice solution to a software problem in a specific context. The course covers the rationale and benefits of object-oriented software design patterns. Numerous problems will be studied to investigate the implementation of good design patterns.