Domain-Driven Design has attracted quite a lot of attention in recent years. This course explains the concepts of DDD, and explores how it can help us model complex software systems. We'll lift the lid on key concepts such as Bounded Contexts, Aggregates and Ubiquitous Language, and take a pragmatic look at how to apply these concepts to address real challenges. The course also covers the Command-Query Responsibility Segregation (CQRS) pattern, and describes how it fits in with DDD.
The course primarily addresses architecture and design challenges. We also dip down into code where appropriate, to illustrate key points and to make things tangible. Code examples are presented in Java (other languages can be catered for, on demand)