This came across my desk earlier today. I’ve actually been interested in this kind of “from the ground” up view: basically compiling simulators for very simple machines, but then bootstrapping all of a simulated virtual machine from the ground up.
From Nand to Tetris in 12 steps.
Addendum: This was the story that set me on the road to finding the video above. Someone implemented the 16-bit ALU from the above in terms of the LEGO-like construction materials available in the videogame “Minecraft”. Very wacky.
Thanks for finding this video Mark.
This is really excellent. Very refreshing to see CS being taught this way. I think he has done a wonderful job in designing the course, especially the test vectors for every module of the project and software implementations of higher levels for efficiency and no single point of failure for the students.
It does surprise me a little he could squeeze the software part of the course into a single term, especially as it had compiler work in it. Look like most of the nastier theory is already done for the students, but the opportunity to explore beyond the basic course is great. For the appropriate kind of mind doing this course at a young age could be a life-defining experience.
It has been a long-time ambition of mine to design a HDL and do this kind of bootstrapping from NAND or NOR and build everything up to an OO-HLL compiler and OS services layer (then perhaps implement it in a FPGA).