Advanced Software Engineering
Advanced software engineering rests on solid theoretical foundations. This section explores concepts that enable building reliable, expressive, and maintainable systems.
The 24 articles are organized into 7 progressive modules.
foundations
Monoids, DAGs and code/data duality - the universal structures underlying programming.
type-structures
Type algebra, ADTs and total functions - the foundations of an expressive type system.
type-design
Make Illegal States Unrepresentable, Parse Don't Validate - using types as guardrails.
quality-and-testing
Testability, TDD and Property-Based Testing - building confidence in code.
description-and-interpretation
Program as value, DSLs and encodings - separating description from execution.
types-and-logic
Curry-Howard, Propositions as Types, Refinement Types - when types become proofs.
advanced-patterns
Currying, implicit injection, interfaces and architectural decisions - advanced patterns.
Last updated on