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.
[ted id=1570]
One day, someone will build a game of Tetris using the least possible number of transistors.
I’m content with having programmed a Tetris-clone in Jack (the language which has to be implemented within that course)
I hope you deviated slightly from the tetris rules or prepare for the lawsuit :-)
Can I do all things in this course physically with hardware components without software simulators ? may work ?
Absolutely! You’ll be retracing the (physical) development of the computer as we know it.
There will be tough spots. When you get stuck, check out these two groups on Hackaday.io for inspiration:
https://hackaday.io/list/2402-homebrew-computers
https://hackaday.io/list/25846-homebrew-cpu
Hi there,
look here to see an implement the nand2tetris project on an fpga-board with ICE40:
https://gitlab.com/x653/nand2tetris-fpga/
My son showed me a youtube video of tetris built in Minecraft. That is a ton of work.
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.
Which book?
“Diamond Age”
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.
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.
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 :-)
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)
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.
Didn’t realize they just renamed the TECS course, thought this was something different…
These NAND guys have it all wrong… NOR gates are the only way to go! :-)
From NAND to ihavemoreimportantthingstodo.
Sounds like the course of study for computer engineering.
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!
Awesomely smart, and that geometry learning app for kids in the TED talk – just wow!
I thought this sounded like TECS :) Great book.
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
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….
My favorite thing about SS is everyone is an experts but nobody knows how wear leveling works :T
Proud to still buy magnetic..