Settings

Theme

Build a Modern Computer from First Principles: Nand to Tetris Part II

coursera.org

154 points by mkeyhani 9 years ago · 36 comments

Reader

qubex 9 years ago

This course seems to be by the authors (and based upon) The Elements of Computing Systems, a truly marvellous introduction to computer architecture that holds the readers' hand as they construct a system from the hardware up. I cannot recommend it enough.

  • moolcool 9 years ago

    My university's assembly course was based on this book. It was fantastic, the most I've learned in any class

bjelkeman-again 9 years ago

Does anyone have a recommendation for an electronics course that starts from the basics, with real hardware, for some who did electronics at highschool, but has forgotten essentially everything but some abstract knowledge. I'd really want to be able to design simple stuff on a breadboard. I know there is a ton of stuff out there, but where to start?

raz32dust 9 years ago

Highly recommend this course. I am a self-taught programmer with experience in building infrastructure backends. But I had not done formal courses like OS, computer architecture, networks etc. I was able to finish part 1 in a couple of months with just 3-4 hours per week, and came out with a deeper understanding of what goes within a computer. It also inspired me to do more formal courses in some areas that I am more interested in. It is also a nice ramp up if you want to do heavier courses while still working full-time because almost everyone can afford 4 hours per week, but following a full, formal course online (e.g, MIT OCW etc.) requires a lot more time and discipline to be able to keep momentum and finish the course in good time.

lamby 9 years ago

My problem would be that as soon as my computer could play Tetris I wouldn't do anything else...

xiaoma 9 years ago

This would be so good if it were available off of Coursera, which is essentially a shake-down for certificate fees at this point. Nand2Tetris is a fantastic course.

Back in its heyday 3 years ago, I did a ton of courses on Coursera. They weren't perfect, of course. There was no higher-level coordination that could lead to covering an entire 4-year degree's worth of material and it was hard to match up courses from different institutions with different prereqs. It was hard to find advanced courses in general and the enforced speed at which content was expected to be completed sucked.

But the automated graders were great. I went through parts of many, many courses before having to abandon them due to work pressures and I finished a few, like the scala course and the fantastic automata course and some stuff from Berkeley before they bailed and moved to edX. It wasn't ideal for adult independent learners, but Coursera used to provide real value, especially for introducing niche topics that wouldn't be available via OCW.

It's a pity they never figured out a business model that would fit what its learners really wanted and just threw up a paywall instead.

  • JHonaker 9 years ago

    You could just buy the book. It's what I worked off of.

  • chibolo 9 years ago

    You could apply for financial aid. It's pretty easy I got it right away.

  • coaxial 9 years ago

    What paywall are you talking about? Unless I'm missing something, every course I did on Coursera had the option of buying a certificate. But if I didn't want to pay, I could follow and complete the course all the same; I just didn't get the certification in the end. The contents were the same, the exercises were the same, and the knowledge gained was the same.

bogomipz 9 years ago

Does anyone know if part 2 is a new Coursera offering then? I looked through the FAQ and didn't see any mention of that, only that that part 1 and 2 are stand alone courses.

  • dang 9 years ago

    Part 2 didn't exist when I worked through the book and watched the Part 1 lectures a couple years ago, so presumably this is new. The big question is: do they actually take you all the way to Tetris? Surely it is their duty to deliver on the best course title of all time!

    The book, btw, is a masterpiece for anyone unfamiliar with the material it covers—particularly for programmers like me who are comfortable with the language layers and up, but to whom the hardware and lower programming layers were a mystery. Getting a simple, but rich enough to be demystifying, understanding of the those layers by actually building them myself was (no exaggeration) a healing experience for me, and made me want to fly to Israel just to hug those guys.

    For any programmer who never took courses like this or tinkered at the hardware level, and thus has that alienated feeling of skating on a frozen mystery their whole career, this book is the antidote. It's a classic of economy, given how short it is and how much it covers. Of course it gets through it all by oversimplifying, which you realize the moment you get to a chapter whose topic you already know. But it does get through it all, which is astonishing.

    • bogomipz 9 years ago

      >"Part 2 didn't exist when I worked through the book and watched the Part 1 lectures a couple years ago, so presumably this is new."

      Thanks for the confirmaton, I didn't remember seeing this either.

      "The book, btw, is a masterpiece ..."

      Agreed. The paper back is a nice format and reasonably priced for a technical book as well:

      https://www.amazon.com/Elements-Computing-Systems-Building-P...

    • nickpsecurity 9 years ago

      I was considering it based on positive feedback for a bootstrapping project where cleanslate hardware, software, compiler, and/or interpreter are done simple as possible to mske root of trust. Far as hardware, I was looking at Forth, JOP (Java) or Wirth's RISC as lowest layer with simple language targeted to it.

      You're endorsement adds extra corroboration it might be useful for that. Also, if they keep it simple, might be able to use the FOSS tools like Qflow and ABC.

    • droithomme 9 years ago

      "The big question is: do they actually take you all the way to Tetris?"

      In Part II, when they introduce the java like programming language, the assignment is to write a game. One can write whatever game they wish. Tetris is one possibility. I myself wrote Tetris so I know it is possible, and it is possible to implement using the architecture developed in the class. However, not everyone is forced to implement Tetris at that point. They have the freedom to choose other classic games, or even new games if they wish.

      After this assignment comes both the full compiler and the implementation of the operating system.

    • qubex 9 years ago

      Skating on a frozen mystery” is a wonderful turn of phrase. Is it yours or is it an idiom I haven't (yet) come across?

      • dang 9 years ago

        I wouldn't say it's 'mine' but it just popped into my head.

  • droithomme 9 years ago

    The content Part II has always been part of both the original college course and the accompanying book and website. The coursera lectures for Part II were released this year.

theoutlander 9 years ago

This is a very exciting course. I would highly encourage some of us in software who take everything for granted to take this course (incl. part 1).

hellbanner 9 years ago

NAND refers to NAND gates right -- does this course start from Hardware?

  • signa11 9 years ago

    > NAND refers to NAND gates right -- does this course start from Hardware?

    NAND does refer to NAND gates. no the course doesn't start from hardware. a (java based) simulator is used to simulate the most fundamental building block.

    and then things go from there.

    take a look at the following: http://www.nand2tetris.org/ for more information.

  • detaro 9 years ago

    Pretty sure that's part of the first course (https://www.coursera.org/learn/build-a-computer), and this one starts above the hardware.

  • rkachowski 9 years ago

    the hardware is simulated, but you do actually start from NAND gates to build primitive logic gates, then forward to a half adder, full adder, ALU, CPU and ram memory

liegroup 9 years ago

Just finished this course on Coursera; highly recommended.

madengr 9 years ago

Is it built with discrete logic or an FPGA?

  • khedoros1 9 years ago

    I think you start by building the hardware inside a simulator. From the description in the first part of the course, you build things from the gate level using an HDL, working up to designing and building a CPU+RAM, programmable using "Hack" machine language, and an assembler so that you aren't stuck writing opcodes directly.

    Part 2 starts from that assembly and goes into developing a higher-level object-oriented language called "Jack", then a compiler and operating system.

  • Graziano_M 9 years ago

    Part 2 is all software. Part 1 is built in a simulator, starting rom nand gates, writing their own simple HDL.

  • droithomme 9 years ago

    The class focuses on CPU design using NAND gates. These are simulated in software logic simulators. However, there are people who have built working architectures from the class using FPGAs. No word on whether anyone has rebuilt everything using discrete 7400 gates.

amelius 9 years ago

I'd like to see a course where they build alternative computers. I.e. not the ones we are using now. I feel we are living too much in a monoculture.

  • qubex 9 years ago

    What do you mean by ”alternative computers”? Analogue computers? Quantum computers? Balanced ternary computers? Binary decimal computers? Non-Von Neumann architecture computers? Harvard architecture computers? Parallel computers? Single instruction set computers?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection