For an independent study I made a simple "multi-core" VM in Processing that could load a rudimentary operating system and print text to a window.
It was interesting to consider how to design an instruction set for a CPU that would have multiple threads of execution. I had to think about resource allocation and other parallel processing issues without knowing the way those problems are handled in real world designs.
Done while in high school