I am currently teaching MEng Level 4 Advanced Software Design, MEng/BEng/BSc Level 3 Software Design Principles and Patterns as well as MSc Software Design Principles and Patterns. Students completing these courses should at the end have a good knowledge of the software design process for object oriented software; be able to describe software design principles and be able to choose from a range of software design patterns and to implement these singly or in combination to solve specific problems. As well as that they should know about the application of Software Architecture design. We also look at current and possible future trends in Software Design. Most implementation examples are in Java.