Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?
Education Programming Hardware News

From a NAND Gate To Tetris 103

mikejuk writes "Long before the current crop of MOOCs (Massive Online Open Course) there was a course that taught you all you needed to know about computers by starting from the NAND gate and working its way up through the logic circuits needed for a computer, on to an assembler, a compiler, an operating system, and finally Tetris. Recently one of the creators of the course, Shimon Schocken, gave a TED talk explaining how it all happened and why it is still relevant today. Once you have seen what is on offer at you will probably decide that it is not only still relevant but the only way to really understand what computers are all about."
This discussion has been archived. No new comments can be posted.

From a NAND Gate To Tetris

Comments Filter:
  • Logic is Logic (Score:5, Interesting)

    by thejuggler ( 610249 ) on Tuesday October 16, 2012 @03:31AM (#41666519) Homepage Journal
    Somewhere between learning to write my first "Hello World" program on the Apple IIe (and the TI99/4A) and making a career out of programming years later, I went to schools for Computer Repair and Bio-Medical Electronics. I still have a pile of 7400 series [] IC chips and my breadboards amongst other electronic components. I learned analog and digital circuit design in the late 80's. The logic learned in those classes still applies to everyday programming today. No matter what I did in those previous careers, the training I did then still applies today. AND, OR, NOT, NAND, NOR, XOR and XNOR are still the 7 basic logic elements that make up all digital electronics and programming. From there Truth Tables are built and boolean algebra is applied to create any and all circuits and code today. In my humble opinion these are still essential to training people new to various IT fields. It's like having to learn nous, verbs, adverbs and adjectives in order to write understandable thoughts. If you lack this basic understanding learning the more advance concepts is difficult at best. It's good to see these are still being taught somewhere.
  • Bottom Up Approach (Score:1, Interesting)

    by Anonymous Coward on Tuesday October 16, 2012 @04:21AM (#41666689)

    I agree with the bottom up approach to learning programming & CS.

    I started off learning BASIC, but it was very slow going. As soon as I got into 8086 Assembly everything clicked into place. After making a few simple games, I built my own Boot loaders and toy OSs, Languages, etc. without any teaching or courses needed. I remember thinking, "I wonder how you make a bootable disk?", Turns out everything I needed to know was in the BIOS documentation: Interrupt 19 []

    I agree that knowing about the circuitry was neat, and necessary for completeness, but it's by no means essential for CS, IMO. Learning the electronics didn't really help me much because at the instruction level even things like CALL are abstractions for more logic... Maybe if I had been learning on RISC hardware, or had been content to stay in some VM Sandbox I'd have a different view?

    The difference between the NAND to Tetris course, and taking a crash course on (x86 | ARM) Assembly + RTFM for your BIOS and CPU is in the end, my programs actually worked on Real hardware. That makes my efforts far more useful immediately and far more relevant. For instance, I built disk partition tools and undelete utilities and actually sold them on a BBS I built myself, and I still use them to this day. I've got a .ISO with my OS and disk tools, and some games that I can put on Floppies, HDs, USB drives, CDs / DVDs, etc. and boot them with any x86 or x64 system.

    I understand the course is for Universities, and so contains a certain level of depth, but IMO, after you study how NANDs can perform computations they should switch to ARM or x86 assembly using Real hardware -- A Raspberry PI costs less than their damn physical book!

    Furthermore, NANDs alone do not a computer make. That's just WRONG. You need something to pulse the logic gates, like a Capacitor. If you want it to be actually useful then it'll need I/O: You'll need some buttons and a display. If you're not going to teach CS then why focus on the irrelevant underlying circuitry to such a large degree? When I was 18 I actually wired transistors, capacitors, resistors, LEDs and button switches together to "Program" an actual working Tetris game -- Didn't require a VM to run, and my friends were far more impressed than they would have been with some program inside an existing computer.

    My point is: Don't preach building computers from scratch unless you're actually going to enable folks to do just that in real life. If it's a CS course then utilize an actual chipset. IMHO, Save time & download (QEMU | VMWare) + (GNU Assembler | NASM) then start building your own bootstrap loader that will run on real hardware. []

  • by donscarletti ( 569232 ) on Tuesday October 16, 2012 @06:12AM (#41667053)

    When I studied Comp Sci in the early 00s, we had a compulsary couse on digital circuits, ground up sort of stuff, nand gates, verilog, that sort of thing. If you didn't have a course like that, it is regretable.

    My proudest moment is my 80 something year old grandfather, who's own father had built radios for a living and who's brother is a retired electrical engineer saw my textbook and grilled me about solid state switching. He said he did not understand how a signal could be selected based on another signal without the use of electromechanical relays. He knew roughly how a transistor works and I explained how they could be combined into AND, OR and NOT gates. From there, I drew a circuit digram of a multiplexer and to him it was like some great realization that there was no perversion of God's laws going on inside a CPU (joke).

    He bought his first PC and Digital Camera within a month.

"my terminal is a lethal teaspoon." -- Patricia O Tuama