Programming Tetris by first building a logic gate, then a computer, then…

Hone your fundamental understanding of computer systems by completing this online course called NAND to Tetris. The idea is to develop each fundamental unit that goes into making computer programs a reality. This starts with logic gates, which are put together into modules that eventually become a functioning computer. From there you need an operating system, a compiler, and eventually you’ll be playing a game of Tetris which you programmed yourself.

It’s certainly not an easy journey, but if you have a computer at your disposal you should be able to make it all the way through the course. There’s a software suite which includes a hardware simulator so that the computer you’re building can be assembled using HDL instead physical components.

The concept is discussed in this TED talk given by [Shimon Schocken]. It is also embedded after the break and in addition to the NAND to Tetris project he shows off some self learning software on the iPad. To us it seems very much like the learning software [Neal Stephenson] envisions in the Young Lady’s Illustrated Primer from his Diamond Age novel.

Ahh I love that book! Its one of a rare few books that blew my mind several times in my first read through! After reading it, I would’ve built my 8 bit adder in a full CPU had I more time (and jumper cables) with this book as a guide.

It seems a bit patronizing to put “programmers” in quotes. You can upgrade your car stereo without knowing how to build the car from the ground up, and knowing such things does not mean you will install the stereo any better.

Knowing good programming design and coding practices is far more effective than knowing assembly or how the instructions are decoded in memory (unless you are creating a compiler).

There is no “one true way” and having a lot of differently skilled people might actually be good (you know, alternative/easier/cheaper solutions the establishment had not considered because they follow their usual train of thought)

I “appreciate” the point you’re making about cognitive bandwidth and the importance of truly understanding the salient compared to the relative luxury of grasping the tangential. That being said, it’s a pretty big badass who can claim to know enough about computing to build a Game Boy from scratch.

I picked this book up hoping to learn some cues on how to structure the approach to teaching basic concepts of building computing systems. Overall it is a great book, but seems more focused on gluing together things you all ready know. There are some things it introduces very well but other times explains how to implement concepts that it’s assumed you all ready know.

If your unfamiliar to some of the concepts in the book it does give you an idea of what you need to learn and the direction you need to go. If you read this book and get to the point where you are familiar with all the subjects you will have an excellent grasp of the foundations of computing systems!

Seems that this is an advertisement for the book. Yup, he gives you a bunch of chapters free, but some of the key chapters are left out….with links on Amazon on how to get them. Would be fine if he said that from the get go, but it doesn’t seem to be that way. I wish I could get on TED and promote my book that hasn’t been paid to be promoted elsewhere….