Builds upon the object-oriented concepts learned in earlier courses, continuing with an in-depth application of object-oriented design principles and patterns. Learners will survey design patterns and implement them in C# .NET applications. Additional topics include the observer, template, state, and command design patterns.