The Elements of Computing Systems: Building a Modern Computer from First Principles

Author: Noam Nisan, Shimon Schocken
All Hacker News 25
This Year Stack Overflow 2
This Month Stack Overflow 1

The Elements of Computing Systems: Building a Modern Computer from First Principles


Review Date:


by Doriphor   2019-01-13

I would personally recommend this book . (There’s also an associated coursework available at EdX I believe? You can also check out the book’s site at

by Doriphor   2019-01-13

A link?

Yeah the book I used for my computer architecture class also used a super simplistic C-like language for the compiler, and it also used a super simplistic CPU (it only has one register iirc) which is fine because the book walks you through the creation of the CPU from logic gates, but it also makes things really hard when it’s time to program the damn thing, and that’s why I never managed to get any further than writing an assembler for it :(

by errorkode   2019-01-13

You might want to look at The Elements of Computing Systems , also known as "nand2tetris", It will start you out with nothing more than a NAND logic gate and you'll build the whole stack, from ALU to CPU to compiler to simple OS. Quite fun and kept reasonably simple.

by rzzzwilson   2018-11-10
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].





by anonymous   2018-03-19

There are no arrays in HDL. In section 1.3 of the nand2tetris companion book, he says

Since we already know how to implement the elementary versions of these gates, the implementation of their n-ary versions is simply a matter of constructing arrays of n elementary gates, having each gate operate separately on its bits. This implementation task is rather boring, but it will carry its weight when these multi-bit gates are used in more complex chips, as described in subsequent chapters.

So besides writing a trivial script in Python to avoid all that typing, you're not missing anything.

by anonymous   2018-03-19

There's a great textbook called The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken, which serves as the basis for a university course taught by the authors called Workshop In Computer Construction - From NAND to Tetris in 12 Steps. This course is also taught at other universities under different names.

There's a 10 minute introduction on YouTube and a 1 hour Google TechTalk on Google Video, both by the author himself.

The official companion web site is

Don't let the title "Computer Construction" fool you. By "computer", the author does not just mean the rectangular plastic box on your desk, he means the entire computing system, from the individual logic gates up to highest-level application programming.

The book/course teaches you

  • how to create your own individual logic gates
  • how to build your own logic circuits
  • how to build your own CPU
  • how to program in machine code directly
  • how to program in your own assembler (which you wrote in machine code)
  • how to write your own virtual machine
  • how to design, implement and program in your own high-level language (which you wrote in assembler)
  • how to write a bootloader
  • how to write an operating system
  • and ultimately how to write a simple game
by bogomipz   2017-08-20
>"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:

by pankajdoharey   2017-08-20
I think Implementing a 6502 is a good example for an architecture implementation. Since it has already been done in numerous NES emulation projects, A lot of us have a good understanding of the CPU. Plus it is the part of a history which many kids could relate to. The video game era and genesis of personal computing era was almost entirely based off of this single CPU. It isnt small but definitely a stepping stone towards understanding a modern CPU. anything lesser makes it just a toy. For a toy, I like the one described in "Elements of Computign systems" here
by bediger4000   2017-08-19
Are you thinking of "The Elements of Computing Systems: Building a Modern Computer from First Principles" < by Noam Nisan and Shimon Schocken?