Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time.
This course isn't an introduction to object-oriented technology or design. It assumes you are reasonably proficient in at least one OOP language, and you should have some experience in object-oriented design as well.