6 ms·
I first attempted this 7 years ago, after I graduated college. I got through the first 2 chapters. It was extremely rewarding. But regrettably, I abandoned it f
by meter 3y ago
I first attempted this 7 years ago, after I graduated college. I got through the first 2 chapters. It was extremely rewarding. But regrettably, I abandoned it for other side projects.
I picked it up again 3 months ago, and it’s been a blast. I’m on chapter 8, having completed the logic gates, ALU, CPU, assembler, and half of the virtual machine.
Every chapter is overwhelming — in a good way. I keep thinking to myself, “how the hell is this going to work?” And when it does, it’s so satisfying.
As a side project, purely for educational purposes, it’s the most rewarding thing I’ve done. I’ve learned so much. It’s a damn good project. And I’m damn proud of myself for sticking with it.
Highly recommended.
- shostack 3y agoThis and books like Code give me such deep respect for the people who originally figured these things out.
- Lamad1234 3y agoI've read Code and most of Computer Systems, a Programmer's perspective, but doing something by hand would've still been better!!
- superfunny 3y agoWe did the whole project as part of a class; it was one of the best classes I took in my CompSci program. It was excellent.
- MichaelZuo 3y agoHow did you learn the prerequisite solid state physics knowledge in order to fully understand the background behind the first two chapters? e.g. The actual mechanism by which an integrated circuit transforms input into useful output. I've never been able to find a solid explanation on how even the simplest real world integrated circuit, such as a TI SN7400, actually does that.
- jon-wood 3y agoThe course explicitly states that it’s not a physics, or even really an electronics, course. It doesn’t go into the gritty details of how all this stuff works in the real world, just how once it does work you can string it all together to build a computer and then a virtual machine to run on it.
- moritzwarhier 3y agoI have only faint memories of my beginner's course on this topic at university, and absolutely no knowledge. Somehow I remember the word MOSFET. I think the wikipedia articles about logic gates should provide all necessary cross references. "Fully understand" is an elusive term though. How do you fully understand the solid-state physics of logic gates if you don't fully understand all of physics, chemistry, maybe even quantum mechanics... Not meaning to be dismissive though! I love to try to fully understand things and hate having to accept black box logic. But I also have to admit that I've given up on this approach for many things a long time ago. Skimming the course summary, it sounds as if this "Hardware Description Language" might mark the boundary of what this course is about. Makes sense, it's not "from physics to NAND", it's "from NAND to Tetris" :)
- froggit 3y agoThe term "hardware description language" still gives me nightmares 5 years after my only experience working with them. Was working on my master's in an interdisciplinary CS/MIS/CompEng program for Cybersecurity and needed an elective. "Fundamentals of Computer Architecture" sounded kinda cool. I walk in on the first day not realizing that while I had done my undergrad in MIS (fun fact: this is a business degree), literally every person in the course was either on the last semester of their undergrad in CompEng or were grad students that already had a BS in CompEng (this school combined some undergrad/grad lectures). Suddenly i hear the teacher say like "grad students will also need to use an HDL and design a processor compatible with the basic MIPS instruction set." I started at "what's HDL mean?" Teacher responds "If that's a real question then it means: Hurry and Drop this Lecture." Day 1 and I already have the wrong questions for the wrong reasons. That was a really bad 3.5 months... But it's also proof that if you hate literally everything hard enough, then it is absolutely possible to pull a 100 day "zero to MIPS HDL prototyping" speedrun.
- wintogreen74 3y agoI've done this too, and it also took me multiple (3!) tries to get through the entire thing. I interleaved it last fall/winter with Ben Eater's amazing series on building an 8-bit computer on breadboards. I bought everything over several months from China, then built the subsystems as the parts arrived over the winter. You should do that next! Aside from being (maybe even more) rewarding, it looks damn impressive to see all the flashing LEDs and understand what's happening.
- meter 3y agoThanks for the recommendation. I'll definitely look into it!
- sunday_serif 3y agoYes! Ben eater’s content accompanies nand to Tetris so well. I did the 6502 project in which you assemble a computer system on bread boards (wiring together the clock, cpu, ram, etc). It helped solidify many of the concepts from nand2tetris. For some reason doing it all physically with real chips and wires made it all a bit more memorable. I’d love to try his other bread board project in which you assemble all the inner workings of a cpu on bread boards as well — I think this is what you were referring to.
- nvy 3y ago>It helped solidify many of the concepts from nand2tetris. For some reason doing it all physically with real chips and wires made it all a bit more memorable. Hang on a second, does nand2tetris not involve real chips and wires?
- sircastor 3y agoNo, nand2tetris is done in virtual environments. This is largely about accessibility. If it’s tied to hardware, fewer people can do it. Additionally, real hardware means there’s additional opportunity for error due to faults in the hardware or environmental variables. That said, Nand2Tetris could, in theory, be done with a bunch of 74xx NAND chips on a breadboard.