Advanced Software Design Course by Mirdin

11h 23m 41s
English
Paid

Course description

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

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

Watch Online Advanced Software Design Course by Mirdin

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

Comments

0 comments

Want to join the conversation?

Sign in to comment

Similar courses

Supercharged Code Editing with Vim and Neovim

Supercharged Code Editing with Vim and Neovim

Sources: zerotomastery.io
Enhance your coding skills with easy-to-learn Vim and Neovim techniques. Use them in IDEs and terminals to boost productivity and navigate code swiftly.
2 hours 55 minutes 8 seconds
React & TypeScript Chrome Extension Development [2021]

React & TypeScript Chrome Extension Development [2021]

Sources: udemy
Hi! Welcome to the comprehensive Chrome Extension Development course using modern web frameworks in 2021. This is the only course on Udemy that is focused on bu
8 hours 52 minutes 35 seconds
Shift Nudge – Interface Design Course (PRO packet)

Shift Nudge – Interface Design Course (PRO packet)

Sources: shiftnudge.com (Matt, MDS)
Shift Nudge is the systematic process to learn the visual skills of interface design, even if you don't have a design background, even if you're not an expert, even if you have ...
105 hours 34 minutes 18 seconds