I love this book (the first edition), project, and course.<p>It is incomplete, but I thought I would share my implementation of the software stack in F#. Currently, only the assembler is implemented, but in my personal opinion, I think it showcases the beauty of F# for domain modeling. When I return to the project, I hope to restart the VM implementation and continue adding to the FPGA implementation as well. My eventual goal is to have the entire software stack built using F# that can than be run on an FPGA implementation of the CPU.<p><a href="https://github.com/bmitc/nand2tetris" rel="nofollow">https://github.com/bmitc/nand2tetris</a><p>Types to model the instructions and source file expressions: <a href="https://github.com/bmitc/nand2tetris/blob/main/dotnet/Nand2Tetris/Assembler/Types.fs" rel="nofollow">https://github.com/bmitc/nand2tetris/blob/main/dotnet/Nand2T...</a><p>The full assembler, mainly consisting of the parser and translator: <a href="https://github.com/bmitc/nand2tetris/blob/main/dotnet/Nand2Tetris/Assembler/Core.fs" rel="nofollow">https://github.com/bmitc/nand2tetris/blob/main/dotnet/Nand2T...</a>
Buy this book if you're a programmer who wants to know how computers work.<p>I read the first edition in high school, and if I had to choose either this book or my entire undergrad CS education, I'd pick this book.
As others have commented, the original book was one of those little gems that once you read, you realise how blind you were before, and it is extremely accessible.<p>Often material is either too abstract or far too detailed, ECS managed to find the perfect balance where someone with a CS background can drill down to transistors and come back upwards again and really understand where they are going on that journey.
How similar is this book to CODE by Charles Petzold? I loved that book because it progressively builds up an imaginary computer using very easy to understand concepts. Even non-technical people can read it to understand how computers work internally.
<a href="https://www.nand2tetris.org/" rel="nofollow">https://www.nand2tetris.org/</a><p>The course is at the above website, in case you want to start working through it before this edition is released in July.
My girls, then aged 10 and 12, made it through the Coursera ECS first course. They are not geniuses, but the material is stellar. I helped them in a couple of assignments. They enjoyed it, even tough not one of them went the STEM route. They became the smart artsy young women that make art and music with computers.
The first edition is a <i>great</i> book, I completely recommend the first ~4 chapters, after that the ROI is not as good.<p>Personal opinion: I have found "Computer Systems: A Programmer's Perspective" to be a better introduction to the same set of topics.
Does anybody know something about the main differences to the first edition? Is it the same HACK computer (and stack, with assembler, high-level language, etc.), or did they change that?<p>The original architecture had some caveats - e.g. no external interrupt capability, so IO was implemented using busy polling and inspection specific IO-mapped memory regions (I don't blame them, as it made the book more concise and you can not cover everything) and there has been discussion about a HACK-2 from the community, so it would be interesting if somebody knows more.
This is one of the best books you can read as a software engineer. Lessons can be done over weekends and they teach you so, so much. I recommend this to everyone when discussing CS books. Absolutely incredible work - and concise too.
I have the first edition. It was such a great read. I practiced the concepts by building a 4-bit ALU in Minecraft back in the day (~2013).<p>I thoroughly recommend this book.
Is there any place to purchase a digital copy of this? I want to read it, but don't like paper copies. Besides the kindle edition, I'm looking for an ePUB or PDF mostly.
I had the pleasure to be taught this course by Prof. Schocken and also implement <a href="https://www.nand2tetris.org/" rel="nofollow">https://www.nand2tetris.org/</a>
It's very important to know that Prof. Schocken is a true hacker - he speaks a lot with his students about hacking and curiosity, which is far more important than academic grades.
I love this book. At the same time, isn't the whole point of abstraction to make this knowledge irrelevant for people who build applications on top of it? Like, the knowledge should only have utility insofar as the abstraction designers and implementers at the levels below yours did a bad job, unless you have a use case they didn't design for
This is an amazing book, the engineering, bottom-up counterpart to the equally marvelous, but top-down, mathematical SICP. Between these two a serious student can get a wonderful foundation in CS and a deep and hopefully enduring connection to the beauty in it.
As a side note:<p>It is quite fascinating how computers are really just bits of 0's and 1's. What a magical machine built upon a layer of boolean logic. What an incredible feat.
How does this compare to "Digital Design and Computer Architecture" by David and Sarah Harris? Can anyone who has read both comment?<p>I've been wanting to learn more about the fundamentals of how computers work. I'm also interested in exploring FPGAs.
Better alternative: <a href="https://pages.cs.wisc.edu/~remzi/OSTEP/" rel="nofollow">https://pages.cs.wisc.edu/~remzi/OSTEP/</a><p>It's also free. Does not cover discrete math and assembly afaik.