Agile Architecture and Design

Endnu ikke planlagt
Robert C Martin, "Uncle Bob"

This course is a deep dive into the well-known SOLID principles of Agile and Object Oriented Design. Students will learn the characteristics of sound Object-Oriented designs and architecture, and patterns and practices that create them.

Principles include: The Single Responsibility Principle, The Open Closed Principle, The Liskov Substitution Principle, The Interface Segregation Principle, The Dependency Inversion Principle, and many others. Special attention is paid to Component oriented design, and the principles and patterns of large-scale component architecture.

The course is designed for developers with all levels of experience using the Java, C# or C++ programming language. Beginners will obtain a firm grounding in the principles, patterns and practices, while experienced developers will be able to sharpen and refine their skills by learning how to apply the concepts more effectively.


Learning Outcomes

  • Understand and apply the principles of object-oriented design and dependency management
  • Learn professional practices that make projects succeed
  • Learn important design patterns and how and when to apply them
  • Be able to apply Test-Driven Development in the context of Object-Oriented Design Principles and Patterns


Many programmers have taken this course. The typical distribution in experience is between five and forty years, with a peak at about fifteen. What this means is that the course is actually something of a quasi-conference. We have lots of discussions, and much is shared by the more experienced students. There is certainly much for novices to learn in such a rich environment of ideas. And even the most experienced developers come away with new insights and perspectives.

Topics Covered

  • Coding for Readability and Maintainability
  • Single Resposibility Principle
  • Open / Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation
  • Dependency Inversion Principle
  • Simple Design
  • Refactoring
  • Test Driven Development
  • Screaming Architecture