Продвинутый курс по проектированию ПО - это программа с 6 основными блоками, направленная на улучшение навыков проектирования программного обеспечения. Курс охватывает принципы логики, проектирования структур данных, управление состоянием, модульность и устранение ошибок. Студенты проходят рефакторинг кода, учатся избегать скрытых связей и эффективно решать задачи дизайна программных систем.
Описание курса
Unit 1 | Скрытый уровень логики
Откройте для себя ключевую разницу между проектированием и реализацией в нашем первом модуле. Освойте тройки Хоара, чтобы разобраться в сложности кода и заложить основу для мастерства в разработке программного обеспечения.
Почему проектирование принципиально отличается от реализации и что это значит для создания надежного кода.
Как код, который никогда не терпит сбоев, может всё же содержать ошибки.
Понимание того, что код, выглядящий простым, может быть сложным, и как избежать написания уязвимого кода.
Тройки Хоара - простой способ спецификации, позволяющий увидеть сложность так же наглядно, как и сам код.
Unit 2 | Принцип встроенного проектирования
Погрузитесь в самый глубокий и далеко идущий принцип. Как зафиксировать дизайн программы непосредственно в её коде?
Понимание того, что код может быть механически выведен из проектной документации, и как этот взгляд упрощает системное проектирование.
Использование принципа встроенного проектирования для лучшей структуризации кода.
Понимание наиболее общих форм связей между частями кода. Как находить и устранять скрытые связи, предотвращая превращение простых задач в сложные.
Unit 3 | Принцип представимых и допустимых состояний
Научитесь ограничивать состояния программы так, чтобы только допустимые состояния могли быть представлены.
Понимание того, как разделить пространство состояний программы и уменьшить вероятность сбоев.
Проектирование структур данных и интерфейсов API, которые невозможно использовать неправильно.
Разработка кода без проверок ошибок, который при этом надёжнее самого «защитного» подхода.
Unit 4 | Принцип данных поверх кода
Узнайте, как подход, при котором внимание сосредоточено на структурах данных, способствует лучшей модульности и скрытию информации.
Секрет Парнаса по сокрытию информации, который используется уже более 40 лет.
Как использование принципа скрытия информации делает код более модульным и удобным для расширения.
Организация программы вокруг структур данных для повышения её чистоты и читаемости.
Как экстремальное применение этого принципа позволяет быстрее понимать сложные системы.
Unit 5 | Алгебраическое рефакторинг
Используйте силу алгебры, чтобы обнаружить, что то, что кажется разным, на самом деле может быть одним и тем же.
Понимание сумм и произведений типов данных, а также того, что большинство структур данных являются частными случаями этих двух фундаментальных конструкций.
Как большинство общих рефакторингов представляют собой частные случаи нескольких правил.
Как рефакторинг программы аналогичен разложению многочленов в алгебре.
Unit 6 | Долговечность кода
Когда стоит тратить время на продуманное проектирование, а когда можно оставить это на потом?
Определение и изоляция предположений, заложенных в отдельных строках кода.
Использование принципа подстановки Лисков для обеспечения совместимости кода с будущими версиями.
Применение теории подтипов для предсказания и предотвращения «нарастания сложности», из-за которого код может стать трудным для модификации и очистки в будущем.
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
Video Answer | The Design of Software is A Thing Apart
Урок 10.
00:00:57
Video Answer | Painless Functional Specification
Урок 11.
00:08:48
Video Answer | Modules Matters Most
Урок 12.
00:14:20
Bonus Video | You are a Program Synthesizer
Урок 13.
00:01:48
Video Answer | Hoare Logic | Question 1
Урок 14.
00:01:52
Video Answer | Hoare Logic | Question 2
Урок 15.
00:04:52
Video Answer | Hoare Logic | Question 3
Урок 16.
00:14:50
Video Answer | Hoare Logic | Question 4
Урок 17.
00:03:51
Video Answer | Hoare Logic | Question 4.1 | Bonus
Урок 18.
00:08:48
Video Answer | Hoare Logic | Question 5
Урок 19.
00:07:34
Video Answer | Hoare Logic | Question 6
Урок 20.
00:02:41
A Cautionary Tale
Урок 21.
00:01:16
What is Design?
Урок 22.
00:04:12
The Embedded Design Principle Examples
Урок 23.
00:07:42
The Plain English Test
Урок 24.
00:02:39
Linguistic Antipatterns
Урок 25.
00:07:42
Hidden Coupling
Урок 26.
00:03:34
SQLite Case Study
Урок 27.
00:03:47
Video Answer | Dark Knowledge and Graph Grammars
Урок 28.
00:02:09
Video Answer | My Favorite Principle for Code Quality
Урок 29.
00:04:20
Video Answer | Boolean Blindness
Урок 30.
00:05:22
Video Answer | Hidden Coupling | Examples 1 to 4
Урок 31.
00:08:19
Video Answer | Hidden Coupling | Examples 5 to 9
Урок 32.
00:03:22
Video Answer | Hidden Coupling | The X Macro Trick
Урок 33.
00:02:19
Video Answer | Django E-mail Subsystem | Exercise 1
Урок 34.
00:03:04
Video Answer | Django E-mail Subsystem | Exercise 2.1
Урок 35.
00:02:10
Video Answer | Django E-mail Subsystem | Exercise 2.2
Урок 36.
00:03:52
Video Answer | Django E-mail Subsystem | Exercise 2.3
Урок 37.
00:00:49
Video Answer | Django E-mail Subsystem | Exercise 3.1
Урок 38.
00:01:36
Video Answer | Django E-mail Subsystem | Exercise 3.2
Урок 39.
00:03:48
Video Answer | Django E-mail Subsystem | Exercise 3.3
Урок 40.
00:03:13
Video Answer | Django E-mail Subsystem | Exercise 4.1
Урок 41.
00:01:35
Video Answer | Django E-mail Subsystem | Exercise 4.2
Урок 42.
00:04:35
Video Answer | Django E-mail Subsystem | Exercise 4.3
Урок 43.
00:02:25
Video Answer | Django E-mail Subsystem | Exercise 4.4
Урок 44.
00:09:33
Video Answer | Django E-mail Subsystem | Exercise 4.5
Урок 45.
00:06:40
Video Answer | Django E-mail Subsystem | Exercise 4.6
Урок 46.
00:02:38
Video Answer | Django E-mail Subsystem | Exercise 5
Урок 47.
00:04:25
Video Answer | Django E-mail Subsystem | Exercise 6
Урок 48.
00:01:25
Bug Alert
Урок 49.
00:05:14
Bug Found
Урок 50.
00:07:26
The Two Views Of State
Урок 51.
00:04:19
Locking Down Transitions
Урок 52.
00:07:48
The Internal View
Урок 53.
00:03:01
MIRO
Урок 54.
00:05:00
Video Answer | Applying the Linus Torvalds Good Taste coding requirement
Урок 55.
00:06:41
Video Answer | Bugs And Battleships
Урок 56.
00:01:51
Video Answer | The Most Dangerous Code in The World
Урок 57.
00:05:48
Video Answer | Where To Draw The Boundary
Урок 58.
00:04:39
Video Answer | Restricting APIs | Exercise 1.1
Урок 59.
00:03:31
Video Answer | Restricting APIs | Exercise 1.2
Урок 60.
00:01:14
Video Answer | Restricting APIs | Exercise 1.3
Урок 61.
00:15:06
Video Answer | Restricting APIs | Exercise 2
Урок 62.
00:01:55
Video Answer | Restricting APIs | Exercise 2 Extra Challenge 1
Урок 63.
00:02:23
Video Answer | Simpler and More Correct | Exercise 1.1
Урок 64.
00:01:56
Video Answer | Simpler and More Correct | Exercise 1.2
Урок 65.
00:05:26
Video Answer | Simpler and More Correct | Exercise 1.3
Урок 66.
00:09:21
Video Answer | Simpler and More Correct | Exercise 1.4
Урок 67.
00:06:53
Video Answer | Simpler and More Correct | Exercise 1.5
Урок 68.
00:05:21
Video Answer | Simpler and More Correct | Exercise 2
Урок 69.
00:02:01
Video Answer | Simpler and More Correct | Exercise 2 Extra
Урок 70.
00:02:52
The Data Over Code Principle Intro
Урок 71.
00:06:17
Modularization
Урок 72.
00:03:00
What is a Secret
Урок 73.
00:03:03
Data Abstraction in Action
Урок 74.
00:03:25
Restricting State
Урок 75.
00:04:08
Why Secrets Imply Data Over Code
Урок 76.
00:01:39
Magic Trick Preamble
Урок 77.
00:07:13
Magic Trick Short Magic Trick
Урок 78.
00:09:18
Magic Trick Long Magic Trick
Урок 79.
00:00:50
The Information-Hiding Dilemma
Урок 80.
00:05:56
Video Answer On the Criteria to be Used in Decomposing Systems Into Modules
Урок 81.
00:06:00
Video Answer The Secret History of Information Hiding
Урок 82.
00:08:17
Video Answer Abstraction Not What You Think It Is
Урок 83.
00:04:46
Video Answer Programmer's Apprentice
Урок 84.
00:01:14
Video Answer Worktrees Question 1
Урок 85.
00:02:14
Video Answer Worktrees Question 2
Урок 86.
00:04:43
Video Answer Worktrees Question 3
Урок 87.
00:01:15
Video Answer Submodules Question 1
Урок 88.
00:09:18
Video Answer Submodules Question 2
Урок 89.
00:02:05
Do You Mean Refactorings
Урок 90.
00:07:22
Reductions, Equivalences, and Rewriting
Урок 91.
00:09:12
Algebraic Data Types Sums & Products
Урок 92.
00:09:12
Functions are Exponentials
Урок 93.
00:04:19
Bonus. Recursive Types
Урок 94.
00:04:49
Video Answer The Algebra of Algebraic Datatypes Parts 1 and 2
Урок 95.
00:11:04
Video Answer Equational Reasoning Changing a function call
Урок 96.
00:11:04
Video Answer Equational Reasoning Swapping an if-statement
Урок 97.
00:11:04
Video Answer Equational Reasoning Un-nesting an If Statement
Урок 98.
00:11:04
Video Answer Equational Reasoning Conditional-to-function
Урок 99.
00:11:04
Video Answer Equational Reasoning Functoriality of Map Optional Bonus
Урок 100.
00:01:29
Video Answer Algebraically Refactoring a Weak API Exercise 1
Урок 101.
00:01:38
Video Answer A Tale of Two Parsers Data Modeling Exercise 1
Урок 102.
00:01:55
Video Answer A Tale of Two Parsers Data Modeling Exercise 2
Урок 103.
00:02:41
Video Answer A Tale of Two Parsers Data Modeling Exercise 3
Урок 104.
00:02:24
Video Answer A Tale of Two Parsers Data Modeling Exercise 4
Урок 105.
00:02:22
Video Answer A Tale of Two Parsers Data Modeling Exercise 5
Урок 106.
00:02:14
Video Answer A Tale of Two Parsers Data Modeling Exercise 6
Урок 107.
00:10:33
Video Answer A Tale of Two Parsers Data Modeling Exercise 7
Урок 108.
00:01:53
Video Answer A Tale of Two Parsers Code follows data Exercise 1
Урок 109.
00:01:52
Video Answer A Tale of Two Parsers Code follows data Exercise 2
Урок 110.
00:06:00
Video Answer A Tale of Two Parsers Code follows data Exercise 3
Урок 111.
00:01:04
Video Answer A Tale of Two Parsers Code follows data Exercise 4
Урок 112.
00:04:51
Making Future Proof Code A Tale Of Two Mistakes
Урок 113.
00:04:09
The RAD Process Step 1 Reduce and Sequester Assumptions
Урок 114.
00:03:54
The RAD Process Step 2 Add Openness
Урок 115.
00:07:02
The RAD Process Step 3 Diminish Complexity Ratchets
Урок 116.
00:12:35
Subtyping Mechanism
Урок 117.
00:05:37
Ending Speech
Урок 118.
00:04:43
Bonus. Int vs Long
Урок 119.
00:05:23
Video Answer Designing Software for Ease of Extension and Contraction
Урок 120.
00:04:22
Video Answer Martian Headsets
Урок 121.
00:01:30
Video Answer Additional Reading Why are the Microsoft API Formats so Complicated
Урок 122.
00:01:11
Video Answer Additional Reading How Microsoft Lost the API War
Урок 123.
00:01:44
Video Answer Additional Reading What is Overengineering
Урок 124.
00:04:00
Video Answer Additional Reading Ways to Create Complexity Break your API
Урок 125.
00:02:41
Video Answer Additional Reading Simplicity and Strictness
Урок 126.
00:04:31
Video Answer The GIMP File Format Assumptions Question 1
Урок 127.
00:01:09
Video Answer The GIMP File Format Assumptions Question 2
Урок 128.
00:04:05
Video Answer The GIMP File Format Assumptions Question 3
Урок 129.
00:01:35
Video Answer The GIMP File Format Assumptions Question 4
Урок 130.
00:03:34
Video Answer The GIMP File Format Openness Question 1
Урок 131.
00:06:28
Video Answer The GIMP File Format Openness Question 2
Урок 132.
00:04:29
Video Answer The GIMP File Format Complexity Ratchets Question 1
Урок 133.
00:04:49
Video Answer The GIMP File Format Complexity Ratchets Question 2
Урок 134.
00:05:49
Video Answer The GIMP File Format Complexity Ratchets Question 3
Урок 135.
00:04:42
Video Answer The GIMP File Format Complexity Ratchets Question 4
Урок 136.
00:05:54
Video Answer The GIMP File Format Complexity Ratchets Question 5
Урок 137.
00:03:06
Video Answer The GIMP File Format Bonus Question 1
Урок 138.
00:01:46
Video Answer The GIMP File Format Bonus Question 2
Авторы - Jimmy Koppel, Mirdin , Nils Eriksson
Jimmy Koppel
Джимми Коппел - компьютерный ученый и серийный предприниматель, чьи исследования были представлены в New York Times. В 20 лет он окончил Университет Карнеги-Меллона с двумя дипломами, стал лауреатом стипендии Тиля и позже получил степень доктора философии в области языков программирования в MIT.Через свою компанию Mirdin Джимми обучил более 400 инженеров программного обеспечения на продвинутом уровне. Его блог по проектированию программного обесп
+3
Mirdin
Mirdin - это онлайн-платформа для продвинутого обучения, которая ускоряет развитие программистов, моделируя годы опыта и ошибок проектирования всего за несколько часов. Основанная Джимми Коппелом и Нильсом Эрикссоном, Mirdin предлагает практическое обучение по проектированию программного обеспечения, программированию и MLOps для инженеров продвинутого уровня.
+4
Nils Eriksson
Нильс прошел путь от младшего разработчика до ведущего инженера всего за три года. Он стал техническим лидером основной команды веб-платформы Discovery Networks и участвовал в разработке таких продуктов, как Discovery+, которым сейчас пользуются миллионы людей по всему миру. В 2020 году Нильс услышал подкаст с участием Джимми Коппела и решил пройти его курс. Его успехи были настолько впечатляющими, что Джимми лично пригласил Нильса стать его бизн
hi, it said it has 120 hours of video. Kindly check on this admin. Thank you
CourseHunter Team
...
It's hasn't. Here is all author uploaded
...
CourseHunter Team
Thanks for letting me know. It is a very great course for sure
CourseHunter Team
...
You are welcome
Umaru
I didn't pay for this and I feel scammed.
rawstyle
Umaru
How come? I didn't get much farther than lesson 7, but I feel those have at least some value. I wouldn't pay the massive amount of money they demand, but its not complete garbage...
However, I am very open to better courses on the topic of software design that you can recommend :) Its an area I am weak in.
dyowee
Thank you admin.
rawstyle
Coursehunters Team, does this include their Bonus Exercises for the course? https://self-service.mirdin.com/offers/FmNZEL2o/checkout
If not, will you consider adding it?
CourseHunter Team
rawstyle
Since we are working on adding the entire course, this bonus should be included as well.
Anonymous
CourseHunter Team
They are not included right now
CourseHunter Team
Anonymous
We added all material author provided
Anonymous
CourseHunter Team
No, you didn't. Those materials are missing: https://self-service.mirdin.com/offers/FmNZEL2o/checkout
rawstyle
Interesting course - I believe this is exactly the kind of course I was lacking. One that explains in practical terms how to design, navigate, and work in codebases... I will go through it all and then report back again here if I manage to finish it, on my opinion of it...
In the mean time, are there any similar software design courses that help in understanding and working with larger codebases?
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
"Мышление разработчика программного обеспечения" —-это курс, который обучает всем аспектам архитектуры программного обеспечения и предлагает практические советы по созданию масштабируемых программных продуктов.Вы знали, что разница в зарплате между младшим и старшим разработчиком в США составляет около $65,000 в год? Это показывает, насколько важно инвестировать в себя - возможные выгоды огромны!Чтобы стать старшим разработчиком, нужно
Разработка программного обеспечения — это больше, чем просто написание кода! Этот курс исследует ряд различных принципов, которые следует учитывать при разработке высококачественного крупномасштабного программного обеспечения корпоративного уровня.
CodeBreakthrough Vault: Путь к карьере разработчика
CodeBreakthrough Vault
CodeBreakthrough Vault - это эксклюзивный курс, созданный для того, чтобы вывести вас на новый уровень в жизни и карьере инженера.Ранее эти знания и практики были доступны только в моей индивидуальной менторской программе стоимостью $11 000. Теперь они собраны в структурированный курс, который сочетает лучшие уроки из многолетнего опыта преподавания технологий и наставничества.
+9
[Книга] SOLID: Руководство по проектированию и архитектуре ПО
However, I am very open to better courses on the topic of software design that you can recommend :) Its an area I am weak in.
If not, will you consider adding it?
In the mean time, are there any similar software design courses that help in understanding and working with larger codebases?