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

share ›
‹ links

Below are the top discussions from Reddit that mention this online Coursera course from Hebrew University of Jerusalem.

Offered by Hebrew University of Jerusalem. What you’ll achieve: In this project-centered course* you will build a modern computer system, ... Enroll for free.

Reddsera may receive an affiliate commission if you enroll in a paid course after using these buttons to visit Coursera. Thank you for using these buttons to support Reddsera.

Taught by
Shimon Schocken
and 1 more instructor

Offered by
Hebrew University of Jerusalem

Reddit Posts and Comments

5 posts • 358 mentions • top 50 shown below

r/brasil • post
63 points • rodrigomlp
Nand2Tetris, o melhor curso online já criado

Apenas gostaria de compartilhar aqui uma das maiores descobertas que já tive na internet, um curso no Coursera chamado Nand2Tetris que começou essa semana (acho que dá pra se inscrever ainda!).

Imaginem um curso onde o professor passou 5 anos planejando cada detalhe da aula visando o maior aprendizado do aluno no menor espaço de tempo. Eis o que esses talentosos professores de Israel conseguiram alcançar. A parte I no curso que presume 0 conhecimento prévio de computação te leva do tijolo básico dos computadores, a porta lógica NAND(eles explicam, não se preocupem!), até você construir o seu próprio computador e escrever um jogo de tetris para o computador que você mesmo construiu. Tudo isso em 13 semanas =)

Como eu sei que tem muita gente aqui no Reddit curiosa e que gosta de aprender pensei que seria uma boa compartilhar. Se alguém quiser participar criei um Slack para compartilhar ideias e duvidas sobre o curso. Se metade das minhas aulas fossem tão boas quanto esse curso eu teria ganhado um Nobel (brincadeira haha).

Obs: Acabei não mencionando, mas a construção do computer é feito em um simulador simples e gratuito fornecido pelos autores do curso! O site do curso é esse aqui:


r/programming • post
55 points • codesuki_
Course starts today: Build a Modern Computer from First Principles: From Nand to Tetris
r/programming • post
30 points • ApoMechanesTheos
NAND2Tetris course on Coursera [new session]
r/INTP • post
29 points • Appbeza
"From Nand to Tetris." Quite an interesting course I've been taking recently. Read the overview to see if it's for you. You build a computer system. It's free and everything is done in simulations.
r/computerscience • comment
15 points • wsppan

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

In the Beginning was the Command Line by Neal Stephenson. 

Computer Science Distilled: Learn the Art of Solving Computational Problems by Wladston Ferreira Filho

Thinking in Systems: A Primer by Donella H. Meadows

r/programming • comment
27 points • sake_92

Not only you make real CPU from simple circuits, but also an assembler, a VM, a compiler and a mini OS!!!
There's also free (without certificate) 2-part course on Coursera, with videos etc!

r/compsci • comment
11 points • plexust

I found this free Coursera course to be pretty helpful in learning computer architecture (and it includes lecture videos): Build a Modern Computer from First Principles: From Nand to Tetris.

r/FPGA • post
38 points • amurices
Step-by-step on how to become a competent hardware programmer?

I'd love to get you guys' thoughts on how to at least start a journey of learning how to build circuits and reason about them. I've made posts related to this before, because I have a product in mind ( that depends on a solid hardware design that I'd have to come up with myself - and I just have no idea where to start. Now I've decided that I want to start at the beginning; but I just don't know where that beginning is. I've seen books that seem standard recommended to other people, but I wouldn't be a good judge of whether they're good for people who have no experience with circuit/hardware designs.


For reference, I'm a software guy. I'm into functional programming, and the most contact I've had with FPGAs and HW designs is playing around with Vivado for a couple of months at my last job, and doing the first part of the Nand2Tetris course on coursera (


What books and/or tutorials do you think I should start with?

r/learnprogramming • post
29 points • walking_pineapple
How and where to learn about low-level concepts?

I apologise that this isn't a direct programming question, but after checking out the other cs/programming subreddits, this seemed the least inappropriate place to ask something like this.

So I am CS student who feels like his curriculum doesn't go into much depth on lower level subjects. To clarify, by low-level I mean the stuff right above the electrical engineering level computer architecture type of stuff. I suppose not having enough knowledge in the area makes it hard to precisely state exactly what I want to learn :P, but I hope that's enough. Basically I feel like there's still too much of the computer that feels like black magic to me, and when someone starts talking about caching or branch prediction, I look at them as some kind of wizard.

My goal is to first of all satiate my curiosity about these subjects, but also hopefully to make me a better programmer who has a better idea of what the hell is going beneath the layer I am working at. I am not trying to become a computer engineer, embedded systems programmer or anything like that.

I should also note that I do sort of have a basic idea of these things, but my knowledge is sort of scattered all over the place, and probably most of it is outdated or misunderstood. I want to sort of try to tie it together into this coherent whole.

To further clarify what I am looking for, here are a couple of resources I've found myself for getting started that seem to align with what I want to learn:

So my question is, what resources would you recommend for someone like me? Are the above any good? Is something better than the others? Where to start and where to go from there?

r/computerscience • comment
6 points • QuietlyReading
r/learnprogramming • comment
6 points • grrrranimal

The authors of the book have a free course on coursera, which has a great added benefit of allowing assignments to be submitted and auto-graded so you actually can get feedback. And a forum if you want to ask specific question:

Happens to start today too...

r/EmuDev • comment
5 points • sunspearcoffee

This course gave me the knowledge and confidence to jump into building CHIP-8. Its also really fun!

r/EmuDev • comment
5 points • stillmotion

If you don’t yet know how to program, I would recommend doing the first 5 units of this amazing course, NAND2Tetris:

You build a computer from scratch, in software they provide for you, starting with the very basic building blocks and work your way up to functioning hardware. This won’t tell you how to program in a specific language, but will guide you through a conceptual understanding of all the components of computer hardware and how they all work together. After doing it myself, reading Gameboy datasheets and implementing it all in C became very straightforward to understand.

r/learnprogramming • post
3 points • Ard__Ri
Coursera has a free course where they show you how to build Tetris from binary up.

r/OSUOnlineCS • post
7 points • idontwanttopickone
Any resources to prep for CS 271 (Assembly)?

I'm looking to get a head start on 271 since I have a very busy fall semester and it's the class I'm most concerned with being that I am not at all familiar with Assembly. Are there any resources that help with this class? I tend to like video-based formats like Coursera, Udemy.

I found this:

Does this cover some of the 271 stuff? Also it leads to a project that could be good for the resume. 6 weeks in length so pretty good timing as well.

r/ArtisanVideos • comment
3 points • stainedpickle

Check out the NAND to Tetris course on Coursera. It covers a ton of the basics (though not really at the electronics level), and you get to build a virtual computer from scratch (eventually going on to build a basic VM, OS and apps to run on it).

r/electronics • comment
2 points • cadr

Looks like the book I always recommend has a free course.

r/asm • comment
2 points • biwobald

If you are completely new to the topic, and simply want to get a feeling for how writing an assembler works, I can recommend the Build a modern computer from First Principles course at coursera.  

It takes you all the way from logic gates up to building a working computer and an assembler language to program it. Everything takes place in a simulator so you do not have to fiddle with actual electronics.

r/learnprogramming • comment
2 points • chaotic_thought

I would use the lectures and do the projects on the corresponding Coursera courses. You can use the book for reference as needed, but from what I've seen the book is best as a companion for the course:

There are two courses. The first one focuses on the hardware platform ("Hack") and the assembler. The second one focuses on building a simple operating system and high level language ("Jack").

r/WGU_CompSci • comment
2 points • type1advocate

I have an unlimited Coursera subscription and I definitely plan to take this course once I'm ready for C952.

I've already started messing around with the nand2tetris course which is absolutely amazing. I highly recommend it to everyone in this degree. There's a structured 2 part course on Coursera but there's also free versions out there if you Google it.

r/AskReddit • comment
2 points • kaplanfx

This course is much more straight forward:

It will blow your mind that you CAN learn the basics pretty clearly in just a few weeks.

r/computerscience • comment
2 points • hobbitmagic

It’s free. Just sign up here:

One of the units directs you to the courses home page to download everything you need. Just go through the coursera course and you’ll be good to go.

r/computerscience • comment
2 points • bartuka

Maybe this course is what you want

r/Showerthoughts • comment
2 points • the_other_pink_meat

For anyone interested in learning about compilers and such I can highly recommend NAND2Tetris. It's a two part online course where you first "build" your own computer using entirely NAND gates. Then later develop an assembler, VM translator and "Jack" compiler. All up it's 16 weeks worth of highly rewarding project centered work. I did this for fun being an IT professional. But I'd recommended it to anyone who wanted to get a really good understanding of how a modern computer works.

r/NandToTetris • post
2 points • EpicSolo
January 2017 study group

Anyone wants to form a study group over slack/discord/etc.? We can follow coursera( and/or the book (The Elements of Computing).

r/learnprogramming • comment
4 points • HelpIProcrastinate
r/todayilearned • comment
4 points • Eziekel13

Just in case anyone loves tetris and wants to know how a computer works check out the sites below....They teach you how to build a CPU/computer from scratch and how to program it...From boolean logic gates to nand gates....From binary to assembly code to programing languages...and at the end you get tetris


r/learnprogramming • comment
4 points • tufflax

If you really wanna get to the bottom of things I suggest

I don't really understand what you mean by the "words" that you have to place etc., but if you have a specific example or question I'd be happy to answer. Also, keep in mind that there are many different programming languages, and just because one language is a certain way doesn't mean that all programming is like that. What the computer really does is to just do simple caculations, like adding and subtracting, with binary numbers. All this talk about "access modifiers" like "private", and "methods", etc. are just concepts in C#, they don't necessarily make sense in another language.

r/compsci • comment
1 points • Joecomstl here's a course it's the 3rd thing that pops up on Google

r/computerscience • comment
1 points • bickhaus

I have heard good things about this course as well: Planning to start it soon.

r/answers • comment
3 points • 2059FF

I highly recommend the Nand to Tetris course, available for free on Coursera, if you want to learn how assembling thousands of gates into a working CPU can be done without too much pain, by carefully subdividing the CPU into a few parts, themselves divided into parts, and so on. Once you know how to make a part, you can use it as a "black box" to design the next level up.

And yes, today's very complicated processors (much, much more complicated than the one you build in Nand to Tetris) are "compiled" in pretty much the same way programs are. The compiler gets a description of the circuitry (some written by humans, some produced by other programs), and produces precise instructions detailing where to put every item, and what connects to what. Such compilers include lots of optimization techniques that try to maximize the use of space, and generally do much better than a human could, simply because they can very quickly analyze millions upon millions of combinations.

The last major CPU's layout that was fully done by hand was probably the MOS 6502, with 3510 transistors.

r/C_Programming • comment
1 points • booblaboobloo

  • I would add nand2tetris to the list as a potential alternative to #1. By far the best, fulfilling and challenging course I've done in my life.
  • Watch out for #4, I've learned pointers from that source and later realized the coding styles and syntax conform to C99. The theory in that source also have some loopholes. I'm not an expert yet on them, but these problems have been pointed out to me by some experienced programmers in this sub.

r/learnprogramming • comment
1 points • alanone1

I would start off with Danny Hillis' book "The Pattern On The Stone", which is very well written, and has a great introduction to how to make working computer logic from almost anything, included TinkerToys (Danny and Brian Silverman made a whole TIC TAC TOE playing computer from TinkerToys years ago (check it out online).

The progression has some parallels to going from 6 simple chemical elements to eventually define the architecture of a living -- and maybe thinking -- live creature. Computers are simpler by far, but still have a fair amount of detail, and a couple of sticking places (for example the design of the control elements).

I think -- after some physical manipulations -- I'd then get the kid to make some simulated logic gates in a graphical language like Scratch or GP or Etoys. These will allow a few simple things to be made (for example it is easier to make a flipflop and see why it works this way, and to see how one would make it from physical materials).

I think I'd then try to find the simplest logic CAD system and simulator on a personal computer and do some simple organizations that are completely understandable: go from flip flips to making an array that can act as a memory, add address lines and bus lines, etc.

Another fairly simple design and build project is to make a simple ALU that can do a few things and hook it to the address lines.

So far we have something that is about the complexity of an old-time built from scratch model airplane: in the range of some 12 year olds and most 14 year olds, and a very few special 10 year olds.

A working memory and an ALU with busses can be used to show how a typical computer gets works from memory, does something with them and puts them back into memory. This is already quite a project. Note that every part of it is very understandable -- what's tough is the amount of stuff that has to be assembled to make this.

The next level is to build the control part, and this is the first organizational part that is a bit more tricky, and a bit more complex to design and understand. It might be more worthwhile to look at the simplest pedagogical computers rather than trying to build one here.

There are courses -- mostly for college -- that do this entire chain of being with perhaps high school students onwards. A really good one is by Nisan and Schocken at Hebrew University of Jerusalem. It includes a CAD/SIM system and you can do everything from scratch.

r/computerscience • comment
1 points • Tylerich

Check out this course:

r/techsupport • comment
1 points • EvidenceBasedSwamp

I'm thinking you want to look at some sort of online course for materials.

Something like this sounds right:

It starts with boolean logic, AND/OR gates. Basically with AND/OR operations you can design circuits that add or substract or multiply divide. You learn how you can make decisions with circuits and other fun stuff.

After those basics you get to higher level stuff.

If you wanted even lower level stuff that's more an electrical engineering thing, but IIRC the EE students still had to take some sort of architecture course like this one first.

r/cpp • comment
1 points • lothiack

There is a course from the authors of Nand2Tetris at coursera.

r/AskComputerScience • comment
1 points • mulletlaw

This is a companion course taught by the creators that is very well done, and totally free.

r/asm • comment
1 points • tanypteryx

If you would like to go a bit deeper than "just" assembly in understanding what makes a computer tick, look no further than this course: (Did it about 5 years ago & I think it's still free if you're not looking for a certificate)

Not only will you design your own ALU from first principles, you'll also write your own assembler.

Granted, the architecture used differs quite a bit from that of a standard PC, but the content of this course serves as a great foundation for further explorations. It did for me, at least.

r/techsupport • comment
1 points • robertdeniro_ok

Sorry for interrupting :) but I wanted to recommend you a course in Coursera about computer science, it starts from the very low level, logic gates, and starts building up a computer from scratch. Maybe it's not exactly what you're interested in, but you can give it a try. I don't know if it has a practical application as a hobby but idk, I find it very interesting. Here it is: from nand to tetris

PS: This sounded like an advertisement lol

r/rust • comment
1 points • TheWass

Hack is a small assembly language created for the "From Nand to Tetris" book and course. See It's an enjoyable class that walks you through computer architecture from basic electronics (nand gates) to memory chips to CPU design to assembly language to writing a higher level compiler for your assembly language so you can build a very simple "OS".

r/learnprogramming • comment
1 points • SunnyTechie

I really enjoyed taking the Nand2Tetris course on Coursera. Gave me a much better understanding of low level hardware and software. It’s completely free

r/roblox • comment
1 points • direMitten

For anyone interested in this stuff, I really recommend the first part of this free course:

It teaches you how computers work, starting from the simplest logic gates.

r/computerscience • comment
1 points • lordvader_31

Build a Modern Computer from First Principles : From NAND to Tetris

This is a great course for the Fundamentals of Computer Architecture and plenty more.

r/asm • comment
1 points • m-e-g

Coursera also has one that I took years ago: Build a Modern Computer from First Principles: From Nand to Tetris

You start out with basic gates, then use those to build the circuits in a CPU and system using a hardware description language that runs in a local simulator. You build up to a working computer that you program Tetris on. It was fun, but you have to pay if you want to submit the projects and get grades. The lectures, software and course forums are free, so it costs nothing if grading isn't important.

r/computerscience • comment
3 points • peroz1

You should try Nand2Tetris, there is also a Coursera version

r/computing • comment
1 points • ovidiub13

I recommend this course:

It's a 6 week course that you can do over weekends, and it takes you from logic gates all the way to assembly language, and then further on to the software stack in the second part of the course.

r/cybersecurity • comment
1 points • NetherTheWorlock

If you're just starting out and intend to go study Computer Science in school, I'd recommend learning from the ground up. Coursera has a class that teaches how computers work starting from basic logic gates and building upward. Knowing how things work under hood (at a very low level) will help you understand the quirks of why things actually work the way they do. Technical security works often involves finding those kinds of corner cases and exploiting them. Low level assembly knowledge is also good for either malware analysis or developing exploits.

Build a Modern Computer from First Principles: From Nand to Tetris

r/Unity3D • comment
1 points • cfinger

Love it. Especially after taking Nand to Tetris:

Plz have all the levels add up to building a computer :)

r/IWantToLearn • comment
1 points • edigpp0121

Start with this :

r/learnprogramming • comment
1 points • dougouverson