Building a computer from scratch: open source computer science course

Here's an absolutely inspiring TED Talk showing how "self-organized computer science courses" designed around students building their own PCs from scratch engaged students and taught them how computers work at a fundamental level.

Shimon Schocken and Noam Nisan developed a curriculum for their students to build a computer, piece by piece. When they put the course online -- giving away the tools, simulators, chip specifications and other building blocks -- they were surprised that thousands jumped at the opportunity to learn, working independently as well as organizing their own classes in the first Massive Open Online Course (MOOC). A call to forget about grades and tap into the self-motivation to learn.


  1. “PCs from scratch”  ??  i couldn’t readily (first 5 minutes of biographic video) figure out at what level “scratch” meant. perhaps somewhere between mining the silicon and being handed a motherboard?  (because it can’t be much of an achievement if any idiot like me who’s typing this on a computer “assembled from scratch” started with a motherboard)  i’ll assume the students were given nothing more pre-made than a (ARM) CPU..?

      1. Exactly. I have the authors’ book. You “build” the computer theoretically, not in reality (although I imagine you could recreate the virtual computer with a FPGA). You write code that specifies the output of a “chip” based on the input. The idea is that you keep building more and more complicated circuits but understand that deep down, everything is still just gates.

        1.  thankee for elucidating on that; both of yous.  (but) was there any early indication in the above that these “PCs from scratch” are virtual only?    (“virtual @#$! ain’t real @#$!” –mary chestnuttt)

          1.  Dunno, haven’t had the chance to watch it yet.  I wasn’t trying to be a jerk, I was making a joke about quietly trying to clue you in so no one would notice.  I think it’s an understandable mistake.

          2. I didn’t watch the video until now either (I was at work). As far as I could tell, if you hadn’t read Schocken and Nisan you very well might think he was talking about real hardware. To be fair, the language that you specify things is not very different from the language that people use to program FPGAs, and those are the real future of hardware (although retro-enthusiasts do still build computers out of TTL gates)

  2. ‘…from scratch.”?  Of course, Randall’s already covered the subject…and just in the nick of time:

    / I started my career working with and servicing equipment based on TTL gates and transistors, and eventually the equipment was based on 8-bit single-chip CPUs (such as the 8080A, the precursor to the 8086).

    // I agree with Schoken and Nisan.  It’s too bad that TTL gates in DIP packages aren’t in common use any more.  Wirewrapping rules!

    /// Think of NANDtoTetris as the equivalent of the way you learn math.

  3. At the point where he talked about grading and failing, I stood up and applauded loudly. The cat delivered a startle response from across the room; otherwise, no one heard. 

    1. Me too! At the exact same spot. I’ve never actually clapped at an online video before. As a big fan of MOOCs (coursera, edx, udacity) I’m surprised I hadn’t heard of nand2tetris. I’m going to have to check it out. Thanks for the link Cory.

  4. BTW, no coincidence that such a clarion mind should have come from a family that we can thank (along, of course, with Max Brod) for our ability to read K. in English. When I was a teenager, two authors lit my lit. fire: Kafka and Dostoevsky. Those Schocken paperbacks were worn to a nub by the time I was 15. All my time since in IT, no geek experience has made me feel like those books did; I’d pick one up and without opening it would feel heart pounding, hair on spine rising, just knowing what was inside.

  5. Truly building a computer would be quite an ordeal.  Back in the Commodore AMIGA days I built an upgrade board from a kit of parts and I just about went blind soldering in the Pin Grid Array socket for the CPU and that’s when they had only ~40 pins.  I’m not sure it would be humanly possible to do all the tasks that were designed to be done by robots today.

    1. You don’t have to solder a CPU when you are building a CPU. And it is possible with not too many logic ICs and a couple of registers (ICs containing several flip flops). They usually don’t have more than 16 pins. 

      The problem is, if you actually want to build it, a lot of time is spent designing the circuit boards and soldering the components together. And the result after one semester is probably a 50 Hz CPU you have to program in machine language. 

      Building a virtual machine is a very good idea to let the students concentrate on the big picture while still knowing exactly what is going on and theoretically being able to actually build the thing. 

Comments are closed.