1. Кто такой сеньoр, отличия от middle и от lead- Рост и карьера разработчика
 - Куда дальше?
 - Технические навыки и качество
 - Способность к самостоятельной работе
 - Взаимодействие в команде
 
2. Понятия грязного, чистого кода, рефакторинга и архитектуры- Понятие компонента, абстракции и уровня абстракции
 - Понятие библиотеки, инструмента
 - Понятие архитектуры приложения
 - Принципы архитектуры: coupling и cohesion
 - Понятие шаблонов проектирования
 - Понятие грязного и чистого кода
 - Пример чистого кода
 - Пример грязного кода
 
3. Основы ООП- Историческая справка: от мнемокодов к ООП
 - Класс, поле, метод
 - Принципы ООП
 - Инкапсуляция
 - Наследование
 - Полиморфизм
 - Взаимодействие классов
 - Критика ООП
 - Функциональное программирование
 
4. Процесс превращения кода в ПО- Написание кода
 - Что такое программное обеспечение
 - Создание компонентов
 - Объединение компонентов
 - Unit-тестирование
 - Совместная разработка, git и code review
 - Основы git
 - Pull Request и процесс code review
 - Использование сторонних библиотек
 - Системы управления задачами
 
5. Взаимодействие разработчиков в команде- Основные характеристики команды
 - Коммуникации в команде
 - Незапланированные встречи
 - Почта
 - Code review
 - Концепция Гейта
 - Definition of Ready и Definition of Done
 - Agile, Scrum, Kanban
 - Рекомендации как общаться в команде
 
6. Работа над проектами- Организационные моменты
 - Выбор проекта
 - Тестовый фреймворк
 - Приложение
 - Продумывание структуры проекта
 - Работа над кодом
 - Создаем ПО из кода
 
7. Принципы написания чистого кода- Структура кода
 - Классы как компоненты
 - Приложение как набор компонент
 - KISS
 - DRY
 - YAGNI
 - SOLID на примерах
 - О принципах
 - Single Responsibility Principle
 - Open/Closed Principle
 - Liskov Substitution Principle
 - Interface Segregation Principle
 - Dependency Inversion Principle
 - Шаблоны GRASP на примерах
 - О GRASP
 - Обобщенные
 - Без четких границ и структуры
 - Для чего
 - Обязанности и действия
 - Creator
 - Information Expert
 - Low Coupling
 - Controller
 - High Cohesion
 - Indirection
 - Polymorphism
 - Protected Variations
 - Pure Fabrication
 - Как пользоваться шаблонами проектирования
 - Подход к решению с помощью шаблонов
 - Шаблоны как способ повторного использования решений
 
8. Диаграммы классов и инструменты- Модель С4: знакомство
 - Карты кода
 - Диаграмма кода
 - Что такое UML
 - Типы UML диаграмм
 - Диаграмма классов
 - Диаграмма компонентов
 - Диаграмма последовательности
 - Почему важно визуализировать сложный код
 - Общие правила построения диаграмм
 - PlantUML
 - Что это такое
 - Как использовать для генерации кода
 
9. ВоркшопПрактическое занятие с преподавателем на котором вы порисуете код
10. Порождающие шаблоны проектирования- Factory Method
 - Abstract Factory
 - Builder
 - Prototype
 - Singleton
 - Dependency Injection
 - Lazy Initialization
 - Object poo
 
11. Структурные шаблоны проектирования- Adapter
 - Bridge
 - Composite
 - Decorator
 - Facade
 - Flyweight
 - Proxy
 - Aggregate
 - Extensibility
 - Marker
 - Pipes and filters
 - Opaque pointer
 
12. Поведенческие шаблоны проектирования- Chain of Responsibility
 - Command
 - Iterator
 - Mediator
 - Memento
 - Observer
 - State
 - Strategy
 - Template method
 - Visitor
 - Blackboard
 - Interpreter
 - Null object
 - Protocol Stack
 - Scheduled task
 - Single-serving visitor
 - Specification
 
13. Приемы рефакторинга- Процесс рефакторинга
 - Что делать перед рефакторингом
 - Почти TDD
 - После рефакторинга
 - Технический долг
 - Запахи кода
 - Приемы рефакторинга
 - Составление методов
 - Перемещение функций между классами
 - Организация данных
 - Упрощение условных выражений
 - Упрощение вызовов методов
 - Решение задач обобщения
 
14. Что такое хорошая архитектура кода- Отличия хорошей и плохой архитектуры кода
 - Размывание архитектуры
 - Рефакторинг архитектуры
 - Проблемы поддержания архитектуры
 
15. Презентация проектаЭтот раздел посвящен презентации курсовых проектов участников, обсуждению проблем, возникших во время реализации, и использованных в проектах шаблонов проектирования.