This weekend I finished part 1 of the Nand2Tetris course on Coursera. Overall it was a course that I really enjoyed. I always had vague notions of how a computer works at the low level, however, before this had never taken the time to dive a little deeper and really understand how it works.
Building a simulated PC, using nothing but NAND gates and Data Flip Flops was pretty incredible. Taking these basic components you work through six modules of the course. Throughout these modules you build up successive layers of abstractions, starting with simple logic chips, all the way to building the CPU and Computer which is capable of running the Hack machine code.
The first 5 modules of the course are designed in such a way that they are simple enough for someone with little to no programming experience to complete. I do think that if you’re coming to this course with absolutely no programming background it will be a little more challenging, but not impossible. The hardest part then would probably be Module 4 where you have to write a few programs in the Hack assembly language. Module 6 is one where you can do one of two projects, one where you write an assembler in whatever language you want, or another where you simply hand assemble some programs.
By progressing through the six modules in part 1 of this course you’ll take the time to see how a simple machine can be built from elementary components. You will understand combinational logic and also sequential logic, plus you will see how to write a simple assembler as well. It was nice to be able to use Golang to write the assembler as it’s a language I like and don’t get to use often enough, so this provided a good project for that.
Overall I’d say if your interested in getting a little better understanding of how your computer works, or if you’re thinking of taking a class to guauge your interest in a Computer Science/Engineering topic, this is a great course to take. The quality of the videos on Coursera are very good, the textbook material is available on the course’s website or you can buy it. The material is a little challenging to work out the chips sometimes, but with some effort its doable and there are resource available online including a forum if you get stuck.
I’m looking foward to part 2 of Nand2Tetris which focuses more on the software side of things. After I finish the second chapter of SICP I’m going to take this on.