I've had ideas about creating something for the purpose of teaching low level concepts all the way up to how they connect to the higher level (languages and programs we use every day).
It would have many layers, each layers one concept, and it would show just one concept at a time, but in a zoomable map. It would start by showing the highest level layer - a game running.
Then it would zoom in super fast until it reaches the lowest layer - how registers and caches work. Now the user has to go through every layer until they reach the highest layer again.
All layers are explained visually.
From how the CPU executes instructions, to how it fetches them from registers, to caches, to how the MESI protocol works to keep caches coherent, to how data is fetched from RAM when it isn't in the cache and how slow this is, to how data needs to be fetched from disk, how the CPU feeds data to the GPU, to how all of these systems intertwine together through buses. From this level we should have a pretty good architectural view of how all the systems work together at a low level.
From here we zoom out into a higher level to driver land and then to OS land and to how a runtime works to load a PE/ELF into memory. Then we go on to show what is inside an executable and how the data got there - from assembler to compiling and linking to tokenizing and parsing to actual code.
At this point there should be a good view of how code actually gets executed.
Then we zoom out again to show how code is structured into platform independent layers to abstract networking protocols, file systems, multi-threading, etc. Then how this is used to build core systems for memory allocation, maths, debugging and profiling, etc. Then on to resource systems for textures, materials, 3D models, etc, to the low level renderer where the rendering commands are being dispatched, how data is fetched from the different resources to achieve this. On to the above layers of scene graph management, animation, post processing, HUD, and finally gameplay.
This gets us all the way back to the highest layer where the game is running. From this point forward the user is free to go to any layer and play around with some parameters to see how the layers above and below are affected.