Курс будується за принципом від простого до складного. Спочатку студенти розбираються з основами, а потім переходять до конкретних патернів та їх застосування в реальних проектах.
На цьому курсі починають з розуміння, що таке патерни проектування і навіщо вони потрібні. Тут пояснюють концепції чистого коду, рефакторингу та test driven development. Під час live-кодування показують, як перетворити поганий код на хороший. Студенти дізнаються, чим відрізняється якісний код, вивчають ознаки поганого коду та типи рефакторингу.
Далі курс охоплює антипатерни - типові помилки проектування. Студенти розуміють, що таке надмірне та недостатнє проектування. Вчать створювати код, який не тільки компілюється, але й ефективно виконується. Також розглядають способи реалізації патернів, вивчають GRASP-патерни та GoF-патерни, вчать їх класифікувати.
У цій частині курс показує, як створювати об'єкти за допомогою патернів Abstract Factory, Builder, Factory Method та Prototype. Студенти вивчають принципи SOLID, знайомляться з DI-фреймворками. Окремо розглядають патерн Singleton - його реалізацію різними мовами програмування та використання в різних DI-фреймворках.
Курс детально розбирає структурні патерни: Adapter, Bridge, Facade, Flyweight, Proxy. Студенти вчать застосовувати їх у коді. Наприклад, патерн Flyweight використовують для зменшення споживання пам'яті. Окремо порівнюють успадкування та композицію, показують переваги останньої. Патерн Decorator застосовують для логування та обробки помилок.
Тут курс охоплює патерни, що визначають взаємодію об'єктів. Студенти вивчають Command, CQRS, ORM-шаблони, State, Strategy, Template Method, Memento, Mediator, Observer та Visitor. Навчаються застосовувати та адаптувати ці шаблони під конкретні задачі. Важливий аспект - вміння вибирати правильний патерн на основі поставленого завдання.
Завершальні модулі присвячені патернам корпоративних додатків. Курс показує еволюцію принципів проектування та сучасні підходи до вирішення складних проблем. Студенти вивчають шаблони кешування, управління винятками, взаємодії з користувачем, Actor Model та Event Sourcing. Наприкінці лектор дає рекомендації з кар'єрного розвитку, розповідає про популярні співбесідні питання, а студенти презентують власні курсові проекти.
Після курсу підвищиться рівень кваліфікації. З'являться вміння працювати з рефакторингом коду та патернами проектування. Студенти навчаться декомпозувати великі системи, писати чистий код. Велика увага приділяється практичним навичкам.