Advanced Software Design Course by Mirdin

11h 23m 41s
English
Paid

Advanced Software Design Course is a program with 6 main modules aimed at improving software design skills. The course covers the principles of logic, data structure design, state management, modularity, and error correction. Students undergo code refactoring, learn to avoid hidden dependencies, and effectively tackle software system design challenges.

Read more about the course

Course Description

Unit 1 | Hidden Level of Logic

Discover the key difference between design and implementation in our first module. Master Hoare's triples to understand code complexity and lay the foundation for software development expertise.

  • Why design is fundamentally different from implementation and what this means for creating reliable code.
  • How code that never fails can still contain errors.
  • Understanding that code that looks simple can be complex, and how to avoid writing vulnerable code.
  • Hoare's triples - a simple specification method that allows you to see complexity as clearly as the code itself.

Unit 2 | Principle of Embedded Design

Dive into the deepest and most far-reaching principle. How to embed program design directly into its code?

  • Understanding that code can be mechanically derived from design documentation, and how this perspective simplifies system design.
  • Using the principle of embedded design for better code structuring.
  • Understanding the most general forms of connections between parts of code. How to find and eliminate hidden dependencies, preventing simple tasks from becoming complex.

Unit 3 | Principle of Representable and Allowable States

Learn to constrain program states so that only allowable states can be represented.

  • Understanding how to partition the state space of a program and reduce the likelihood of failures.
  • Designing data structures and API interfaces that cannot be misused.
  • Developing code without error checks that is more reliable than the most "defensive" approach.

Unit 4 | Principle of Data over Code

Learn how a data-focused approach contributes to better modularity and information hiding.

  • Parnas's secret of information hiding, which has been used for over 40 years.
  • How using the principle of information hiding makes code more modular and extensible.
  • Organizing a program around data structures to increase its clarity and readability.
  • How extreme application of this principle allows for faster understanding of complex systems.

Unit 5 | Algebraic Refactoring

Use the power of algebra to discover that what seems different might actually be the same.

  • Understanding sums and products of data types, and that most data structures are special cases of these two fundamental constructs.
  • How most common refactorings are special cases of a few rules.
  • How refactoring a program is analogous to factoring polynomials in algebra.

Unit 6 | Code Longevity

When is it worth spending time on thoughtful design, and when can it be deferred?

  • Identifying and isolating assumptions embedded in individual lines of code.
  • Using the Liskov substitution principle to ensure code compatibility with future versions.
  • Applying subtype theory to predict and prevent "complexity buildup," which can make code difficult to modify and clean up in the future.

Watch Online Advanced Software Design Course by Mirdin

Join premium to watch
Go to premium
# Title Duration
1 A Story about Stories 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

Similar courses to Advanced Software Design Course by Mirdin

Building a Transpiler from scratch

Building a Transpiler from scratchDmitry Soshnikov

Category: Others
Duration 2 hours 3 seconds
Great Thinkers, Great Theorems

Great Thinkers, Great TheoremsWondrium by The Great CoursesDr. William Dunham

Category: Others
Duration 12 hours 14 minutes 35 seconds
Enhanced Freelancing with AI

Enhanced Freelancing with AIzerotomastery.io

Category: Others
Duration 46 minutes 29 seconds
Modular Monolith Architecture

Modular Monolith ArchitectureMilan Jovanović

Category: Others
Duration 12 hours 48 minutes 50 seconds
3D Computer Graphics Programming

3D Computer Graphics ProgrammingGustavo Pezzi

Category: Others
Duration 37 hours 55 minutes 2 seconds
SAAS Web Development

SAAS Web DevelopmentProdigies University

Category: Others
Duration 43 hours 32 minutes 12 seconds
Computer Science Fundamentals

Computer Science FundamentalsAndreas Kretz

Category: Others
Duration 1 hour 30 minutes 17 seconds
Building AI Apps with the Gemini API

Building AI Apps with the Gemini APIzerotomastery.io

Category: Others
Duration 3 hours 43 minutes 41 seconds