Discuss this post in our forums

16 Responses to “Building a computer from scratch: open source computer science course”

  1. theophrastvs says:

    “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..?

    • jondean says:

      From NAND gate up.

    • wysinwyg says:

       Psst.  You build it on an emulator.

      • Jonathan Badger says:

        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.

        • theophrastvs says:

           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)

          • wysinwyg says:

             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.

          • Jonathan Badger says:

            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)

    • Ian Wood says:

      Like apple pie, it starts with inventing the universe.

  2. Paul Renault says:

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

    • Sanjaya Kumar says:

      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. robcat2075 says:

    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.

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