I was having a read of Programming as Theory Building (https://gist.github.com/onlurking/fc5c81d18cfce9ff81bc968a7f342fb1) and now I'm thinking about if it's possible to design software in a way that makes it's theory easy to impart. Not necessarily a programming language, but at the design level.
Or possibly out of chunks of well-known theory. Dare I say "pattern language"?