Online courses recommended by Hacker News users. [about]

Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)

Coursera · Hebrew University of Jerusalem · 97 HN points · 21 HN citations

What you’ll achieve: In this project-centered course* you will build a modern computer system, from the ground up. ...

View on Coursera
The vast majority of the courses listed here on HN.Academy are available from their providers for free. Many courses offer a completion certification for a fee. A few courses and specializations require an enrollment fee. HN.Academy receives a referral commission when you visit course pages through links on this site and then purchase courses and completion certificates. If you decide to purchase a certificate or course the commission does not increase the cost of the course and helps support the continued existence of HN.Academy which is much appreciated.

Hacker News Comments about Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)

All the comments and stories posted to Hacker News that reference this course.
Dec 25, 2018 uzairfreaksout on Ask HN: What are the MOOCs you have taken in 2018? Which do you recommend?
The best MOOC course I have taken this year is the one I'm currently doing. It is called nand2tetris [1] where you actually build a 16 bit computer all the way from nand gate. Along the journey you will be building the memory, operating system and also writing a compiler. You can follow my journey in tweets [2].

Another great course I'd recommend is Big History[3]. Like nand2tetris,it gives you a great overview of the entire history of our being. From Big Bang to 2018.

Also, I am looking for some great online courses on Distributed systems. It would be good if assignments are challenging and where you have to write a lot of code.

[1] Nand2tetris:

[2] My Nand2tetris journey in tweets:

[3] Big History Project:

Edit: added extra spaces

Nov 30, 2018 lkrych on Ask HN: What is the best online course you've ever taken?
I have spent a lot of time taking online courses. Here are my favorites.

CS50 ( ) - Best Intro to Computer Science

Nand2Tetris I and II ( ) - Build a computer from logic gates up to a compiler, this is the best class I've ever taken.

Agile Development Using Ruby on Rails ( ) - Great introduction to web development and software engineering principles

I've also been reading some technical books. Would definitely recommend

Modern Operating Systems - Tanenbaum Designing Data-Intensive Applications - Kleppmann

Nov 14, 2018 gassiss on Ask HN: I've been a programmer for 6 years, and I can't solve basic CS problems
There's also a Coursera MOOC on Nand2Tetris:

Jul 31, 2018 tenaciousDaniel on Computer science as a lost art (2015)
I'm also a self-taught web dev, trying to learn more about the fundamentals. I've been trying to get through this course, and while the going is slow, it has been pretty incredible:

Jun 11, 2018 tenaciousDaniel on Learning operating system development using Linux kernel and Raspberry Pi
I'm not familiar with low-level, so I'm not sure how "low" you mean, but I've begun the NAND2Tetris course on coursera and it's pretty great so far. You basically implement a VM from scratch:
May 23, 2018 rpeden on Why did I spend 1.5 months creating a Gameboy emulator? (2017)
This might seem like a roundabout way to start, but I'd recommend Code by Charles Petzold[0].

It starts out with just wires, switches, and relays, and as the book progresses he goes through the process of building up a simple CPU and RAM one step at a time. The book even walks you through coming up with opcodes and assembly language.

Even if you already know this stuff, I found the book was helpful in developing an intuitive feel for how everything works and fits together.

After reading it, you'd probably have a good mental model of how you'd want to approach writing an emulator.

The Nand to Tetris courses and their accompanying textbook would probably be helpful here too[1][2].

[0] [1] [2]

Apr 10, 2018 rzzzwilson on Ask HN: What are some books where you learn by building one project?
There is a book "The Elements of Computing Systems: Building a Modern Computer from First Principles"[0] that is often called "From NAND to Tetris". This has you building a computer simulator from the ground up (NAND to Tetris). There is a website[1] and a Cousera course[2]. And a TED talk[3].





Oct 14, 2017 sitkack on Handmade Hero – A complete game live-coded from scratch
Handmade Nand2Tetris [0][1]



Oct 01, 2017 zoenolan on Ask HN: Where do I get started on ASICs, FPGA, RTL, Verilog et. al?
Nand 2 Tetris[1] is a good starting place. You should get a good view of how the different level interact. Coursera have two cources [2][3] that cover the same material as the book

[1] [2] [3]

Jun 30, 2017 indigochill on Petya: “I Want to Believe”
I'll take a stab at a newb-friendly explanation, bearing in mind I'm only slightly less of a newb, but have at least studied this stuff to some extent and have played with , which is a game about maliciously editing machine instructions. Onwards!

CPUs have a fixed instruction set. Add, subtract, increment by 1, and so on. These instructions in turn are represented in machine language as a binary string, which represents signals that get sent to the CPU's processing center, the ALU (Arithmetic Logic Unit). The ALU has a number of input ports, with each one corresponding to a different fundamental operation.

There are a number of programs capable of taking an executable and providing a step-by-step breakdown in machine language (which makes sense intuitively because the machine has to do this for itself anyway in order to execute the program). So once you have the machine language instructions, you then study it to see what different sets of instructions are doing. This is made somewhat easier by the fact that computers run through instructions linearly (with the exception of jumps, but you also know that jumps represent some sort of logic operating on input, so those are informative as well).

Although this would take forever to do manually, there are programs that aid in breaking machine language into easier-to-understand chunks, like IDA.

Anyway, once you understand what different chunks of instructions are doing, then you can decide how you want to alter the program. You can use a hex editor for the actual editing (I assume professionals use something different, but some game modders use hex editors), which simply lets you change the individual bits on your drive (if this sounds impressive, realize that every time you save a file or something, that's what's going on at a large scale).

If you want a gentle, newbie-friendly introduction to CPUs which will make a lot of this stuff click better, I highly recommend the NAND to Tetris course, which has a video series on Coursera:

Jun 11, 2017 detaro on Build a Modern Computer from First Principles: Nand to Tetris Part II
Pretty sure that's part of the first course ( ), and this one starts above the hardware.
Jun 06, 2017 lotophage on Ask HN: What language-agnostic programming books should I read?
Also in MOOC form now too:

Jun 05, 2017 drio on Ask HN: What language-agnostic programming books should I read?
+1 to Code (Petzold). I would absolutely start with that. One of my favorite books. The build a computer course from coursera ( ) is the natural next step after reading code.
Jun 02, 2017 indigochill on Network Protocols
Depending on how deep you want to go: - This is a fantastic no-prerequisites course that has you actually implementing a functional CPU in 6 weeks starting from building basic logic gates out of NAND gates. There's a hands-on project every week to help you solidify your understanding of the lectures. The resources are also all available at their site: . In case that sounds intimidating, I have no formal CS education either and couldn't implement any of the basic logic gates before I took the course, and I built a CPU by the end so I'm confident others can too. They have a "Part 2" to this course which has you build from the CPU to a functional operating system which would get you an introduction to how kernels work in general, although they recommend some programming experience for that part.

Hacking: The Art of Exploitation - Despite the name, this book is actually an excellent introduction to low-level behavior both on the CPU and on networks (it's split into distinct sections to cover each topic). I would recommend picking this up after the course linked above, because it's somewhat brief with its explanation of CPU architecture. A beginner's course in C programming might also be advisable since this does use some basic C code which might be challenging if you've never been exposed to it before.

Apr 13, 2017 Diggie1225 on Low-Level Programming University – A roadmap to becoming a low-level programmer
I am taking a great coursera course on the very basics of a computer (uses a hardware simulator to build the chipsets necessary to build a computer). It is VERY intro-friendly and gentle, including teaching basic Boolean algebra. Also can be very hands on, which is what I really like about it. Might be a good fit!

Feb 16, 2017 fauria on Ask HN: What are some books where the reader learns by building one project?
+1, along with the author's course "Build a Modern Computer from First Principles: From Nand to Tetris"
Jan 16, 2017 Dangeranger on Ask HN: What's the best computer science book you've read recently?
Working through the class on Coursera now, and it's a lot of fun.
Dec 19, 2016 ravanpao submitted Build a Modern Computer from First Principles: From Nand to Tetris (94 points, 17 comments)
Sadly it looks like the course stops at week 6 after the assembler has been implemented. The next steps in the book are to implement the VM, compiler and develop programs in the high level language you've implemented.

I started the book back in August and got as far as implementing the lexical analysis in the compiler, I was kinda hoping this course would give the the push to finish everything.

They say in the first video that the software part (from week 7) will follow in a second Coursera course.
I've been waiting for that second course for years now...
If you are self taught, you owe it to yourself to take this course. It's the best tie together class I've ever seen, and made a world of difference to me.

Note that this is one the first half of the coursework, I'm still waiting for the second part.

Seriously, if you're self taught, and have been writing code for a while, this and a great compiler course will take you to a new level.

I'm self-taught. This was the first book that actually answered my question "but how does it work?". I'd been getting incomplete and misguided answers for years when I finally stumbled across this book in an HN thread, and I was finally able to put the full picture together.
I did a course based on this book a while back, and while I didn't quite finish it, I did get a lot of enjoyment from it.

I think I probably did it here. Or at least used this page as reference.

For some background
I had avery similar course to this in college. We build a 4-bit machine (with a very limited instruction set) from scratch (well from basic logic gates and RAM). For the final project grade the professor ran a test program through it and saw if the output matched what was expected.

We actually physically built it on a breadboard.

It was fun and I learned a lot. Hopefully this is a similar experience for those who take it.

Looks like an interesting course, though the submission process seems unpleasant compared to other courses I've taken in the past.
Amazing... I really love this course. I teach it to my students it is great!
I've been going through the book and it's been great fun so far.


Interesting. Anyone know if it's updated from [0]? Wonder if it'll just use the same Software. The book [1] was interesting.



I finished it a couple of months ago. It uses the exact same structure and software as described in the book (HACK language, etc).

The included hands-on projects made it more fun and interesting. Basically you'll build a simple computer from the ground up, starting with flip-flops and going all the up up to ALU, memory and CPU.

The grader works well, so you can submit your code and it'll grade you in realtime. You can finish it in less than a month, if you have experience with electronics and Boolean logic.

I've gone through the book and got as far as building the computer, writing the assembler and running some programs on it. Does the course go beyond this? I haven't built the virtual machine or written the compiler, but it looked like from the description of the course, they didn't do that either.
According to the Nand2Tetris site[0], this is just part 1 and only covers chapters 1-6. Part 2 will cover chapters 7-12 but looks to be still in development.


Looks like it's still the same course although with video lectures added
> Course by Hebrew University of Jerusalem

> Project 1 due December 25th

Nov 23, 2016 stpapa submitted Build a Modern Computer from NAND gates, to chips up to an operating system (3 points, 0 comments)
Aug 22, 2016 bhrgunatha on Building a Modern Computer from First Principles
The authors also created a course on Coursera [1] which is also worth a look. Although it only covers the first half of the book (up to Assembler Language.) The authors have promised part 2 but it hasn't been released yet.


Jul 14, 2016 redtuesday on Learning to code as a 30-year-old kid with Apple’s Swift Playgrounds
I really like nand2tetris [1] in which one builds a computer from NAND gates upwards. You build the ALU etc., an assembler, compiler, a OS and VM on which you can run your own version of tetris, snake, whatever. It doesn't teach programming directly, but could be used to teach programming when the first parts are reached that require programming (I believe it was Chapter 6 - Assembler).

The hardware part of the course is also available on coursera now. [2] Previous discussion on hn [3].




Jun 11, 2016 ZenoArrow on Coursera shuts access to old platform courses
Thanks to the author for the heads up, would be real shame if these courses are removed without someone downloading all the material first (I don't care if it's against the ToS, I still think a torrent is the way to go, free education has a greater value than copyright protection).

I'm a bit confused about which courses will be removed and which ones will stay. Is there a list of courses that are present on the old platform but not on the new platform? Also, I don't know where I'd access the old platform and where I'd access the new platform. Am I right in thinking this is a course on the new platform?

If so, where do I go to see the old platform?

Apr 07, 2016 redtuesday on RISC-V Offers Simple, Modular ISA
Cool, haven't thought about that. I probably need to get an FPGA. Really liked the book "The Elements of Computing Systems" [1][2] in which one builds a computer from NAND gates upwards, a compiler, vm and finally a simple OS with applications. The hardware part of the course seems to be on coursera now as well. [3]




Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
HN.Academy is an independent project and is not managed or owned by Y Combinator, Coursera, edX, or any of the universities and other institutions providing courses.
~ [email protected]
;laksdfhjdhksalkfj more things ~ Privacy Policy ~