Advanced Software Design Course by Mirdin is a 138-lesson 11 hours 23 minutes self-paced course by Jimmy Koppel (Mirdin), Mirdin, Nils Eriksson. Mirdin's Advanced Software Design Course, led by Jimmy Koppel, is built as six modules that each isolate one recurring source of software complexity, moving from the logic of individual functions up to how a codebase ages over years.
Course facts
Lessons
138
Duration
11 hours 23 minutes
Level
All levels
Language
English
Updated
2026-09-11
Instructor
Jimmy Koppel (Mirdin), Mirdin, Nils Eriksson
Price
Premium
Mirdin's Advanced Software Design Course, led by Jimmy Koppel, is built as six modules that each isolate one recurring source of software complexity, moving from the logic of individual functions up to how a codebase ages over years.
The six units
Hidden Level of Logic — separating design from implementation and using Hoare triples to spot flaws hiding in code that looks correct
Principle of Embedded Design — deriving code directly from design documents to strip out hidden dependencies
Representable and Allowable States — constraining program state so invalid combinations simply can't occur
Data over Code — applying Parnas's information-hiding principle to make systems easier to extend and understand
Algebraic Refactoring — treating data types as sums and products to see why common refactorings work
Code Longevity — deciding what deserves careful design now versus later, using the Liskov substitution principle and subtype theory
Across 138 lessons, the throughline is refactoring toward code with fewer hidden dependencies and fewer places for bugs to hide — skills meant to transfer to any language or stack you're working in.
Who teaches Advanced Software Design Course by Mirdin?
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 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 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.
What lessons are included in Advanced Software Design Course by Mirdin?
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.
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.
Learn about modern approaches to microservices design. Patterns, testing, and deployment strategies from Chris Richardson can help create reliable systems.
Frequently asked questions
What prior knowledge is required to enroll in this course?
Prospective students should have a solid understanding of basic software development principles, including familiarity with programming languages and software design concepts. A background in software engineering or computer science is recommended, as the course delves into advanced topics such as Hoare's triples, modularity, and error correction.
What practical projects or exercises are included in the course?
The course includes several practical exercises, such as the 'Django E-mail Subsystem' exercises, which help students apply theoretical concepts to real-world scenarios. These exercises focus on topics like hidden coupling and API restriction, allowing students to solidify their understanding of the course material.
Who is the target audience for this course?
This course is designed for software developers and engineers looking to elevate their software design skills. It is particularly suited for those interested in mastering advanced design principles, such as embedded design and state management, and is ideal for professionals aiming to tackle complex software system challenges.
How does this course compare to other software design courses?
The course distinguishes itself by focusing on advanced software design principles like Hoare's triples and the embedded design principle. Unlike introductory courses, it provides deep dives into topics such as code refactoring and state management, offering a comprehensive exploration of complex design challenges.
What is not covered in this course?
The course does not cover basic programming concepts or introductory software development topics. It assumes that participants already have a foundational understanding of these areas. Additionally, it does not address specific programming languages in detail, focusing instead on overarching design principles.
What is the expected time commitment for this course?
The course consists of 138 lessons, with a focus on in-depth exploration of software design principles. While the total runtime is not specified, students should expect to dedicate significant time to both theoretical learning and practical exercises, such as those involving the 'Django E-mail Subsystem'.
How can the skills gained from this course be applied to other areas or careers?
The skills acquired in this course, such as mastering Hoare's logic and understanding the principle of embedded design, are transferable to various software development roles. These skills enhance one's ability to design robust, efficient systems and are valuable in careers focused on software architecture, system design, and software engineering leadership.