Skip to main content
CourseFlix

Advanced Software Design Course by Mirdin

11h 23m 41s
English
Paid

Elevate your software design skills with our comprehensive Advanced Software Design Course, featuring 6 meticulously crafted modules. This program delves into essential software design principles, including logic, data structure design, state management, modularity, and error correction. Equip yourself with the tools to refactor code, avoid hidden dependencies, and master software system design challenges efficiently.

Course Overview

The course is divided into six units, each targeting crucial aspects of software design to bolster your expertise and confidence in handling complex software systems.

Unit 1: Hidden Level of Logic

Explore the critical distinction between design and implementation. Master the use of Hoare's triples to comprehend code complexity and reinforce your software development foundation.

  • Differentiating design from implementation for more reliable code creation.
  • Identifying flaws in code that seems infallible.
  • Avoiding vulnerabilities in seemingly simple code.
  • Utilizing Hoare's triples for a clearer view of code complexity.

Unit 2: Principle of Embedded Design

Engage with the principle of embedding program design directly into code to simplify system design.

  • Deriving code from design documentation to streamline system design.
  • Enhancing code structure using the embedded design principle.
  • Eliminating hidden dependencies to maintain task simplicity.

Unit 3: Principle of Representable and Allowable States

Constrain program states to represent only allowable options, reducing error likelihood.

  • Partitioning state space to minimize failure chances.
  • Creating data structures and APIs that resist misuse.
  • Crafting reliable code without extensive error checks.

Unit 4: Principle of Data over Code

Embrace a data-centric approach to enhance modularity and information concealment.

  • Applying Parnas's information hiding principle for over four decades.
  • Increasing modularity and extensibility through information hiding.
  • Improving program clarity by organizing around data structures.
  • Fostering quick comprehension of complex systems.

Unit 5: Algebraic Refactoring

Harness algebraic techniques to reveal the underlying commonality in diverse structures.

  • Recognizing data types as variations of sums and products.
  • Realizing common refactorings are based on a few fundamental rules.
  • Parallels between program refactoring and algebraic factoring.

Unit 6: Code Longevity

Assess when detailed design is essential and when it can be postponed for future development.

  • Identifying assumptions within lines of code to mitigate future issues.
  • Ensuring future compatibility through the Liskov substitution principle.
  • Applying subtype theory to prevent complexity buildup and future code complications.

About the Authors

Jimmy Koppel (Mirdin)

Jimmy Koppel (Mirdin) thumbnail

Jimmy Koppel is the founder of Mirdin — the software-design teaching company behind the Advanced Software Design Course — and an MIT-trained programming-language theorist whose course material is unusually rigorous about the theoretical underpinnings of software-design decisions: type theory, algebraic data structures, and the lambda-calculus foundations underneath modern languages.

His CourseFlix listing carries the Advanced Software Design Course by Mirdin — a treatment of software design that approaches the discipline at a much deeper level than framework-or-pattern tutorials.

Material is paid and aimed at experienced software engineers ready to study software design from a theoretical-foundations angle. For broader content, see CourseFlix's System Design & Architecture category page.

Mirdin

Mirdin thumbnail

Mirdin is a software-design teaching company founded by James Koppel, an MIT-trained programming-language theorist whose course material is unusually rigorous about the theoretical underpinnings of software-design decisions — type theory, algebraic data structures, and the lambda-calculus foundations underneath modern languages.

The CourseFlix listing carries the Advanced Software Design Course by Mirdin. Material is paid and aimed at experienced software engineers ready to think about design at a much deeper level than framework idioms.

Nils Eriksson

Nils Eriksson thumbnail

Nils Eriksson is a software engineer and educator who has contributed to the Mirdin Advanced Software Design Course alongside James Koppel.

His CourseFlix listing carries the Advanced Software Design Course by Mirdin — a treatment of software design grounded in programming-language theory: type systems, algebraic data structures, and the lambda-calculus foundations underneath modern languages.

Material is paid and aimed at experienced software engineers studying software design from a theoretical-foundations angle rather than from framework idioms. For broader system-design content, see CourseFlix's System Design & Architecture category page.

Watch Online 138 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 138 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: A Story about Stories
All Course Lessons (138)
#Lesson TitleDurationAccess
1
A Story about Stories Demo
05:04
2
Ghosts
04:02
3
The Three Levels of Software
03:46
4
Case Study | Chromium
03:56
5
Hoare Logic
06:13
6
Code Knowledge
04:48
7
Lesson | Hoare logic
23:45
8
Video Answer | The Three Levels Of Software
09:18
9
Video Answer | The Design of Software is A Thing Apart
07:32
10
Video Answer | Painless Functional Specification
00:57
11
Video Answer | Modules Matters Most
08:48
12
Bonus Video | You are a Program Synthesizer
14:20
13
Video Answer | Hoare Logic | Question 1
01:48
14
Video Answer | Hoare Logic | Question 2
01:52
15
Video Answer | Hoare Logic | Question 3
04:52
16
Video Answer | Hoare Logic | Question 4
14:50
17
Video Answer | Hoare Logic | Question 4.1 | Bonus
03:51
18
Video Answer | Hoare Logic | Question 5
08:48
19
Video Answer | Hoare Logic | Question 6
07:34
20
A Cautionary Tale
02:41
21
What is Design?
01:16
22
The Embedded Design Principle Examples
04:12
23
The Plain English Test
07:42
24
Linguistic Antipatterns
02:39
25
Hidden Coupling
07:42
26
SQLite Case Study
03:34
27
Video Answer | Dark Knowledge and Graph Grammars
03:47
28
Video Answer | My Favorite Principle for Code Quality
02:09
29
Video Answer | Boolean Blindness
04:20
30
Video Answer | Hidden Coupling | Examples 1 to 4
05:22
31
Video Answer | Hidden Coupling | Examples 5 to 9
08:19
32
Video Answer | Hidden Coupling | The X Macro Trick
03:22
33
Video Answer | Django E-mail Subsystem | Exercise 1
02:19
34
Video Answer | Django E-mail Subsystem | Exercise 2.1
03:04
35
Video Answer | Django E-mail Subsystem | Exercise 2.2
02:10
36
Video Answer | Django E-mail Subsystem | Exercise 2.3
03:52
37
Video Answer | Django E-mail Subsystem | Exercise 3.1
00:49
38
Video Answer | Django E-mail Subsystem | Exercise 3.2
01:36
39
Video Answer | Django E-mail Subsystem | Exercise 3.3
03:48
40
Video Answer | Django E-mail Subsystem | Exercise 4.1
03:13
41
Video Answer | Django E-mail Subsystem | Exercise 4.2
01:35
42
Video Answer | Django E-mail Subsystem | Exercise 4.3
04:35
43
Video Answer | Django E-mail Subsystem | Exercise 4.4
02:25
44
Video Answer | Django E-mail Subsystem | Exercise 4.5
09:33
45
Video Answer | Django E-mail Subsystem | Exercise 4.6
06:40
46
Video Answer | Django E-mail Subsystem | Exercise 5
02:38
47
Video Answer | Django E-mail Subsystem | Exercise 6
04:25
48
Bug Alert
01:25
49
Bug Found
05:14
50
The Two Views Of State
07:26
51
Locking Down Transitions
04:19
52
The Internal View
07:48
53
MIRO
03:01
54
Video Answer | Applying the Linus Torvalds Good Taste coding requirement
05:00
55
Video Answer | Bugs And Battleships
06:41
56
Video Answer | The Most Dangerous Code in The World
01:51
57
Video Answer | Where To Draw The Boundary
05:48
58
Video Answer | Restricting APIs | Exercise 1.1
04:39
59
Video Answer | Restricting APIs | Exercise 1.2
03:31
60
Video Answer | Restricting APIs | Exercise 1.3
01:14
61
Video Answer | Restricting APIs | Exercise 2
15:06
62
Video Answer | Restricting APIs | Exercise 2 Extra Challenge 1
01:55
63
Video Answer | Simpler and More Correct | Exercise 1.1
02:23
64
Video Answer | Simpler and More Correct | Exercise 1.2
01:56
65
Video Answer | Simpler and More Correct | Exercise 1.3
05:26
66
Video Answer | Simpler and More Correct | Exercise 1.4
09:21
67
Video Answer | Simpler and More Correct | Exercise 1.5
06:53
68
Video Answer | Simpler and More Correct | Exercise 2
05:21
69
Video Answer | Simpler and More Correct | Exercise 2 Extra
02:01
70
The Data Over Code Principle Intro
02:52
71
Modularization
06:17
72
What is a Secret
03:00
73
Data Abstraction in Action
03:03
74
Restricting State
03:25
75
Why Secrets Imply Data Over Code
04:08
76
Magic Trick Preamble
01:39
77
Magic Trick Short Magic Trick
07:13
78
Magic Trick Long Magic Trick
09:18
79
The Information-Hiding Dilemma
00:50
80
Video Answer On the Criteria to be Used in Decomposing Systems Into Modules
05:56
81
Video Answer The Secret History of Information Hiding
06:00
82
Video Answer Abstraction Not What You Think It Is
08:17
83
Video Answer Programmer's Apprentice
04:46
84
Video Answer Worktrees Question 1
01:14
85
Video Answer Worktrees Question 2
02:14
86
Video Answer Worktrees Question 3
04:43
87
Video Answer Submodules Question 1
01:15
88
Video Answer Submodules Question 2
09:18
89
Do You Mean Refactorings
02:05
90
Reductions, Equivalences, and Rewriting
07:22
91
Algebraic Data Types Sums & Products
09:12
92
Functions are Exponentials
09:12
93
Bonus. Recursive Types
04:19
94
Video Answer The Algebra of Algebraic Datatypes Parts 1 and 2
04:49
95
Video Answer Equational Reasoning Changing a function call
11:04
96
Video Answer Equational Reasoning Swapping an if-statement
11:04
97
Video Answer Equational Reasoning Un-nesting an If Statement
11:04
98
Video Answer Equational Reasoning Conditional-to-function
11:04
99
Video Answer Equational Reasoning Functoriality of Map Optional Bonus
11:04
100
Video Answer Algebraically Refactoring a Weak API Exercise 1
01:29
101
Video Answer A Tale of Two Parsers Data Modeling Exercise 1
01:38
102
Video Answer A Tale of Two Parsers Data Modeling Exercise 2
01:55
103
Video Answer A Tale of Two Parsers Data Modeling Exercise 3
02:41
104
Video Answer A Tale of Two Parsers Data Modeling Exercise 4
02:24
105
Video Answer A Tale of Two Parsers Data Modeling Exercise 5
02:22
106
Video Answer A Tale of Two Parsers Data Modeling Exercise 6
02:14
107
Video Answer A Tale of Two Parsers Data Modeling Exercise 7
10:33
108
Video Answer A Tale of Two Parsers Code follows data Exercise 1
01:53
109
Video Answer A Tale of Two Parsers Code follows data Exercise 2
01:52
110
Video Answer A Tale of Two Parsers Code follows data Exercise 3
06:00
111
Video Answer A Tale of Two Parsers Code follows data Exercise 4
01:04
112
Making Future Proof Code A Tale Of Two Mistakes
04:51
113
The RAD Process Step 1 Reduce and Sequester Assumptions
04:09
114
The RAD Process Step 2 Add Openness
03:54
115
The RAD Process Step 3 Diminish Complexity Ratchets
07:02
116
Subtyping Mechanism
12:35
117
Ending Speech
05:37
118
Bonus. Int vs Long
04:43
119
Video Answer Designing Software for Ease of Extension and Contraction
05:23
120
Video Answer Martian Headsets
04:22
121
Video Answer Additional Reading Why are the Microsoft API Formats so Complicated
01:30
122
Video Answer Additional Reading How Microsoft Lost the API War
01:11
123
Video Answer Additional Reading What is Overengineering
01:44
124
Video Answer Additional Reading Ways to Create Complexity Break your API
04:00
125
Video Answer Additional Reading Simplicity and Strictness
02:41
126
Video Answer The GIMP File Format Assumptions Question 1
04:31
127
Video Answer The GIMP File Format Assumptions Question 2
01:09
128
Video Answer The GIMP File Format Assumptions Question 3
04:05
129
Video Answer The GIMP File Format Assumptions Question 4
01:35
130
Video Answer The GIMP File Format Openness Question 1
03:34
131
Video Answer The GIMP File Format Openness Question 2
06:28
132
Video Answer The GIMP File Format Complexity Ratchets Question 1
04:29
133
Video Answer The GIMP File Format Complexity Ratchets Question 2
04:49
134
Video Answer The GIMP File Format Complexity Ratchets Question 3
05:49
135
Video Answer The GIMP File Format Complexity Ratchets Question 4
04:42
136
Video Answer The GIMP File Format Complexity Ratchets Question 5
05:54
137
Video Answer The GIMP File Format Bonus Question 1
03:06
138
Video Answer The GIMP File Format Bonus Question 2
01:46
Unlock unlimited learning

Get instant access to all 137 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Course content

138 lessons · 11h 23m 41s
Show all 138 lessons
  1. 1 A Story about Stories 05:04
  2. 2 Ghosts 04:02
  3. 3 The Three Levels of Software 03:46
  4. 4 Case Study | Chromium 03:56
  5. 5 Hoare Logic 06:13
  6. 6 Code Knowledge 04:48
  7. 7 Lesson | Hoare logic 23:45
  8. 8 Video Answer | The Three Levels Of Software 09:18
  9. 9 Video Answer | The Design of Software is A Thing Apart 07:32
  10. 10 Video Answer | Painless Functional Specification 00:57
  11. 11 Video Answer | Modules Matters Most 08:48
  12. 12 Bonus Video | You are a Program Synthesizer 14:20
  13. 13 Video Answer | Hoare Logic | Question 1 01:48
  14. 14 Video Answer | Hoare Logic | Question 2 01:52
  15. 15 Video Answer | Hoare Logic | Question 3 04:52
  16. 16 Video Answer | Hoare Logic | Question 4 14:50
  17. 17 Video Answer | Hoare Logic | Question 4.1 | Bonus 03:51
  18. 18 Video Answer | Hoare Logic | Question 5 08:48
  19. 19 Video Answer | Hoare Logic | Question 6 07:34
  20. 20 A Cautionary Tale 02:41
  21. 21 What is Design? 01:16
  22. 22 The Embedded Design Principle Examples 04:12
  23. 23 The Plain English Test 07:42
  24. 24 Linguistic Antipatterns 02:39
  25. 25 Hidden Coupling 07:42
  26. 26 SQLite Case Study 03:34
  27. 27 Video Answer | Dark Knowledge and Graph Grammars 03:47
  28. 28 Video Answer | My Favorite Principle for Code Quality 02:09
  29. 29 Video Answer | Boolean Blindness 04:20
  30. 30 Video Answer | Hidden Coupling | Examples 1 to 4 05:22
  31. 31 Video Answer | Hidden Coupling | Examples 5 to 9 08:19
  32. 32 Video Answer | Hidden Coupling | The X Macro Trick 03:22
  33. 33 Video Answer | Django E-mail Subsystem | Exercise 1 02:19
  34. 34 Video Answer | Django E-mail Subsystem | Exercise 2.1 03:04
  35. 35 Video Answer | Django E-mail Subsystem | Exercise 2.2 02:10
  36. 36 Video Answer | Django E-mail Subsystem | Exercise 2.3 03:52
  37. 37 Video Answer | Django E-mail Subsystem | Exercise 3.1 00:49
  38. 38 Video Answer | Django E-mail Subsystem | Exercise 3.2 01:36
  39. 39 Video Answer | Django E-mail Subsystem | Exercise 3.3 03:48
  40. 40 Video Answer | Django E-mail Subsystem | Exercise 4.1 03:13
  41. 41 Video Answer | Django E-mail Subsystem | Exercise 4.2 01:35
  42. 42 Video Answer | Django E-mail Subsystem | Exercise 4.3 04:35
  43. 43 Video Answer | Django E-mail Subsystem | Exercise 4.4 02:25
  44. 44 Video Answer | Django E-mail Subsystem | Exercise 4.5 09:33
  45. 45 Video Answer | Django E-mail Subsystem | Exercise 4.6 06:40
  46. 46 Video Answer | Django E-mail Subsystem | Exercise 5 02:38
  47. 47 Video Answer | Django E-mail Subsystem | Exercise 6 04:25
  48. 48 Bug Alert 01:25
  49. 49 Bug Found 05:14
  50. 50 The Two Views Of State 07:26
  51. 51 Locking Down Transitions 04:19
  52. 52 The Internal View 07:48
  53. 53 MIRO 03:01
  54. 54 Video Answer | Applying the Linus Torvalds Good Taste coding requirement 05:00
  55. 55 Video Answer | Bugs And Battleships 06:41
  56. 56 Video Answer | The Most Dangerous Code in The World 01:51
  57. 57 Video Answer | Where To Draw The Boundary 05:48
  58. 58 Video Answer | Restricting APIs | Exercise 1.1 04:39
  59. 59 Video Answer | Restricting APIs | Exercise 1.2 03:31
  60. 60 Video Answer | Restricting APIs | Exercise 1.3 01:14
  61. 61 Video Answer | Restricting APIs | Exercise 2 15:06
  62. 62 Video Answer | Restricting APIs | Exercise 2 Extra Challenge 1 01:55
  63. 63 Video Answer | Simpler and More Correct | Exercise 1.1 02:23
  64. 64 Video Answer | Simpler and More Correct | Exercise 1.2 01:56
  65. 65 Video Answer | Simpler and More Correct | Exercise 1.3 05:26
  66. 66 Video Answer | Simpler and More Correct | Exercise 1.4 09:21
  67. 67 Video Answer | Simpler and More Correct | Exercise 1.5 06:53
  68. 68 Video Answer | Simpler and More Correct | Exercise 2 05:21
  69. 69 Video Answer | Simpler and More Correct | Exercise 2 Extra 02:01
  70. 70 The Data Over Code Principle Intro 02:52
  71. 71 Modularization 06:17
  72. 72 What is a Secret 03:00
  73. 73 Data Abstraction in Action 03:03
  74. 74 Restricting State 03:25
  75. 75 Why Secrets Imply Data Over Code 04:08
  76. 76 Magic Trick Preamble 01:39
  77. 77 Magic Trick Short Magic Trick 07:13
  78. 78 Magic Trick Long Magic Trick 09:18
  79. 79 The Information-Hiding Dilemma 00:50
  80. 80 Video Answer On the Criteria to be Used in Decomposing Systems Into Modules 05:56
  81. 81 Video Answer The Secret History of Information Hiding 06:00
  82. 82 Video Answer Abstraction Not What You Think It Is 08:17
  83. 83 Video Answer Programmer's Apprentice 04:46
  84. 84 Video Answer Worktrees Question 1 01:14
  85. 85 Video Answer Worktrees Question 2 02:14
  86. 86 Video Answer Worktrees Question 3 04:43
  87. 87 Video Answer Submodules Question 1 01:15
  88. 88 Video Answer Submodules Question 2 09:18
  89. 89 Do You Mean Refactorings 02:05
  90. 90 Reductions, Equivalences, and Rewriting 07:22
  91. 91 Algebraic Data Types Sums & Products 09:12
  92. 92 Functions are Exponentials 09:12
  93. 93 Bonus. Recursive Types 04:19
  94. 94 Video Answer The Algebra of Algebraic Datatypes Parts 1 and 2 04:49
  95. 95 Video Answer Equational Reasoning Changing a function call 11:04
  96. 96 Video Answer Equational Reasoning Swapping an if-statement 11:04
  97. 97 Video Answer Equational Reasoning Un-nesting an If Statement 11:04
  98. 98 Video Answer Equational Reasoning Conditional-to-function 11:04
  99. 99 Video Answer Equational Reasoning Functoriality of Map Optional Bonus 11:04
  100. 100 Video Answer Algebraically Refactoring a Weak API Exercise 1 01:29
  101. 101 Video Answer A Tale of Two Parsers Data Modeling Exercise 1 01:38
  102. 102 Video Answer A Tale of Two Parsers Data Modeling Exercise 2 01:55
  103. 103 Video Answer A Tale of Two Parsers Data Modeling Exercise 3 02:41
  104. 104 Video Answer A Tale of Two Parsers Data Modeling Exercise 4 02:24
  105. 105 Video Answer A Tale of Two Parsers Data Modeling Exercise 5 02:22
  106. 106 Video Answer A Tale of Two Parsers Data Modeling Exercise 6 02:14
  107. 107 Video Answer A Tale of Two Parsers Data Modeling Exercise 7 10:33
  108. 108 Video Answer A Tale of Two Parsers Code follows data Exercise 1 01:53
  109. 109 Video Answer A Tale of Two Parsers Code follows data Exercise 2 01:52
  110. 110 Video Answer A Tale of Two Parsers Code follows data Exercise 3 06:00
  111. 111 Video Answer A Tale of Two Parsers Code follows data Exercise 4 01:04
  112. 112 Making Future Proof Code A Tale Of Two Mistakes 04:51
  113. 113 The RAD Process Step 1 Reduce and Sequester Assumptions 04:09
  114. 114 The RAD Process Step 2 Add Openness 03:54
  115. 115 The RAD Process Step 3 Diminish Complexity Ratchets 07:02
  116. 116 Subtyping Mechanism 12:35
  117. 117 Ending Speech 05:37
  118. 118 Bonus. Int vs Long 04:43
  119. 119 Video Answer Designing Software for Ease of Extension and Contraction 05:23
  120. 120 Video Answer Martian Headsets 04:22
  121. 121 Video Answer Additional Reading Why are the Microsoft API Formats so Complicated 01:30
  122. 122 Video Answer Additional Reading How Microsoft Lost the API War 01:11
  123. 123 Video Answer Additional Reading What is Overengineering 01:44
  124. 124 Video Answer Additional Reading Ways to Create Complexity Break your API 04:00
  125. 125 Video Answer Additional Reading Simplicity and Strictness 02:41
  126. 126 Video Answer The GIMP File Format Assumptions Question 1 04:31
  127. 127 Video Answer The GIMP File Format Assumptions Question 2 01:09
  128. 128 Video Answer The GIMP File Format Assumptions Question 3 04:05
  129. 129 Video Answer The GIMP File Format Assumptions Question 4 01:35
  130. 130 Video Answer The GIMP File Format Openness Question 1 03:34
  131. 131 Video Answer The GIMP File Format Openness Question 2 06:28
  132. 132 Video Answer The GIMP File Format Complexity Ratchets Question 1 04:29
  133. 133 Video Answer The GIMP File Format Complexity Ratchets Question 2 04:49
  134. 134 Video Answer The GIMP File Format Complexity Ratchets Question 3 05:49
  135. 135 Video Answer The GIMP File Format Complexity Ratchets Question 4 04:42
  136. 136 Video Answer The GIMP File Format Complexity Ratchets Question 5 05:54
  137. 137 Video Answer The GIMP File Format Bonus Question 1 03:06
  138. 138 Video Answer The GIMP File Format Bonus Question 2 01:46

Related courses

  • Stripe Payments Cloud Functions thumbnail

    Stripe Payments Cloud Functions

    By: Fireship
    This course has been deprecated! While the code here will still work, the it is recommended that you use the latest Stripe APIs shown in the new.
    1 hour 10 minutes 33 seconds
  • Production-Ready Serverless thumbnail

    Production-Ready Serverless

    By: Yan Cui
    The Production-Ready Serverless course teaches how to build resilient and scalable serverless applications, ready for production deployment. It.
    13 hours 37 minutes 6 seconds 5 / 5
  • Modular Monolith Architecture thumbnail

    Modular Monolith Architecture

    By: Milan Jovanović
    This in-depth course will transform the way you build modern systems. You will learn the best practices for applying the Modular Monolith architecture in a.
    12 hours 48 minutes 50 seconds 5 / 5

Frequently asked questions

What is Advanced Software Design Course by Mirdin about?
Elevate your software design skills with our comprehensive Advanced Software Design Course , featuring 6 meticulously crafted modules. This program delves into essential software design principles, including logic, data structure design…
Who teaches Advanced Software Design Course by Mirdin?
Advanced Software Design Course by Mirdin is taught by Jimmy Koppel (Mirdin), Mirdin, Nils Eriksson. You can find more courses by these instructors on the corresponding source pages.
How long is Advanced Software Design Course by Mirdin?
Advanced Software Design Course by Mirdin contains 138 lessons with a total runtime of 11 hours 23 minutes. All lessons are available to watch online at your own pace.
Is Advanced Software Design Course by Mirdin free to watch?
Advanced Software Design Course by Mirdin is part of CourseFlix's premium catalog. A CourseFlix subscription unlocks the full video player; the course description, table of contents, and preview information are available to everyone.
Where can I watch Advanced Software Design Course by Mirdin online?
Advanced Software Design Course by Mirdin is available to watch online on CourseFlix at https://courseflix.net/course/advanced-software-design-course-by-mirdin. The page hosts every lesson with the integrated video player; no download is required.