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.

Comments

  1. dattaway2 says:

    One day, someone will build a game of Tetris using the least possible number of transistors.

  2. Gizmos says:

    My son showed me a youtube video of tetris built in Minecraft. That is a ton of work.

  3. 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.

  4. jwweather4 says:

    Awesome… I love TECS (The Elements of Computing Systems) by Nisan and Schocken. So many “programmers” have no grasp of what’s going on under the hood, this is a fun way to get started.

    • edonovan says:

      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).

      It seems like a nice course, though.

      • mh says:

        I find a lot of “people” often put others in quotes and assume they are less good if they do not happen to have the same background as themself :-)

      • mh says:

        Oops. forgot my actual point…

        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)

        • JoeM says:

          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.

  5. jwweather4 says:

    Didn’t realize they just renamed the TECS course, thought this was something different…

  6. Mike Field says:

    These NAND guys have it all wrong… NOR gates are the only way to go! :-)

  7. iwna says:

    From NAND to ihavemoreimportantthingstodo.

  8. Steve0 says:

    Sounds like the course of study for computer engineering.

  9. benfindus says:

    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!

  10. zigah111 says:

    Awesomely smart, and that geometry learning app for kids in the TED talk – just wow!

  11. Pup says:

    I thought this sounded like TECS :) Great book.

  12. P. Flow says:

    The book sounds great and it appears that the authors open-sourced it, god bless ‘em; it’s available here:
    http://www.e-booksdirectory.com/details.php?ebook=6707

  13. joeprogrammer says:

    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….

  14. xorpunk says:

    My favorite thing about SS is everyone is an experts but nobody knows how wear leveling works :T

    Proud to still buy magnetic..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 92,407 other followers