Found in 33 comments on Hacker News
matco11 · 2020-02-17 · Original thread
One of my favorite books on subject is The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan
levelist_com · 2019-05-21 · Original thread
Check out the following:

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

deepaksurti · 2019-05-04 · Original thread
One of the best ways would be to build a computer yourself. For that I haven’t found anything better than ECS [1]. Please try to build your own extensions to ECS and don’t forget to burn your computer to FPGA.

Follow that up with Computer Systems A programmers perspective.[2]

My review of ECS [3]




Hackwar · 2018-09-13 · Original thread
I loved this book:

Creating your own programming language is more a side effect, but that is the book that taught me about computers and compilers.

rzzzwilson · 2018-04-10 · Original thread
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].





teacpde · 2018-01-05 · Original thread
I highly recommend and the The Elements of Computing Systems book
mevile · 2017-07-30 · Original thread
This is really neat! Also if you want to learn to build a computer from scratch without hardware, just to learn how computers work, The Elements of Computing Systems is a great book to check out. It's used as a text in some CS programs but it is very readable and easy to follow and the software is free and online. is the website for it.

bogomipz · 2017-06-11 · Original thread
>"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:

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
My choice for bottom-up book: The Elements of Computing Systems: Building a Modern Computer from First Principles
seibelj · 2016-08-22 · Original thread
I recommend the associated book[0] to everyone who asks me about programming book recommendations. The book arrives, and you are shocked at how small it is, just a few hundred pages. If you follow all of the exercises, you get an understanding of how logic works inside of processors (logic gates, adders, etc.), how machine code drives them, how assembly maps to machine code, how a basic virtual machine language (like the JVM) can compile to assembly, then how a higher level language is designed and compiled to the VM.

After doing all of this, you make Tetris in the high level language. It's a badass book, super well-written, and what I consider an essential text.


deepaksurti · 2016-05-04 · Original thread
>> "no one has time to learn everything" - especially at the beginning of their career.

I wish I had this book at the beginning of my career. Makes you design the hardware, then the software for that hardware.

Should not take more than 8 - 12 weeks with school work/day job.

deepaksurti · 2016-02-15 · Original thread
Why not learn just one of these: - programming languages with different paradigms (Functional, Imperative, Logic etc) - Data structures and algorithms (implement a few in each paradigm) - Compilers - Digital electronics - Operating systems - Networking - Math for CS - Orthogonal: Art of debugging, collaboration, technical writing for documentation

Learning the fundamentals, becoming better at these will help one see through the 'stack of tons of languages, tools, frameworks' and yet be able to handle all of these with relative ease.

I wish 'Elements of Computing systems'[1] were there when I started as a programmer.


bediger4000 · 2016-01-22 · Original thread
Are you thinking of "The Elements of Computing Systems: Building a Modern Computer from First Principles" < by Noam Nisan and Shimon Schocken?
earleybird · 2015-09-16 · Original thread
It seems Amazons recommendation system has acquired 'irony' - it's recommending If I acquire it, I will then have to hide it from my son lest he build something and show it to his high school teacher.
notdan · 2015-07-07 · Original thread
This sounds similar to another book/course/project I've seen that was quite interesting to work through:

From NAND to TetrisBuilding a Modern Computer From First Principles

adamnemecek · 2014-09-28 · Original thread
If this is something that tickle's your fancy, you should check out 'The Elements of Computing Systems'
waterfowl · 2014-08-20 · Original thread
it's free online and great, but I also enjoy my hard copy(it was like $20, so so so cheap for what it is)

edit: $30 I guess, still worth it.

bra-ket · 2014-05-07 · Original thread
good idea, I would buy two kinds of books 1) one which aggregates all the "How do I write an OS from scratch" info under links below into one coherent whole. and 2) a tutorial on how to build a domain-specific OS, say OS that only knows to run a web-server, or OS for FPGA or Raspberry Pi, or a mobile OS that knows messaging and nothing else







An adder in functional Verilog:

a + b

Best go with structural if you want to actually learn something. This book ( ) is very good and I think still stands as the best introduction to this type of stuff I've seen. It's also presented in a straight forward enough way that it's good enough self-study for anyone with some programming experience.

kqr2 · 2012-12-20 · Original thread
I would also recommend The Elements of Computing Systems: Building a Modern Computer from First Principles

eterps · 2012-03-26 · Original thread
These are my favorite resources:

Compiler Construction:

The Elements of Computing Systems:


How to Create Your Own Freaking Awesome Programming Language:

Bootstrapping a simple compiler from nothing:

erwan574 · 2012-02-29 · Original thread
A few books exist that try to restore some sort of "complete understanding" :

Software programming starting from assembly language under linux :

A study going from chip design to high level programming :

IHMO this "problem" of "incomplete vision" started when device drivers where introduced in general purpose OS. Professionnal application developpers started to target API instead of hardware. A milestone in this trend for me is Windows 3.0 (1990). This also marks the demise of fixed hardware computers that the hobbyist favored so far.

eterps · 2012-02-28 · Original thread
And even though the STEPS project above is about software, The Elements of Computing Systems [ ] proves that hardware can be understandable as well. Of course that architecture is far too simple to be useful today, but there are still a lot of opportunities that we are missing today:
abbasmehdi · 2011-09-18 · Original thread
Look through this book, I graduated with a degree in ECE 5 years ago, and this book blew me away:
shawndumas · 2011-02-28 · Original thread
The Elements of Computing Systems: Building a Modern Computer from First Principles[1][2]




jamii · 2010-12-08 · Original thread
> ... working knowledge of the inner workings of computers ...

I'm a big fan of 'The Elements of Computing Systems' - takes you from NAND gates to pong.

eterps · 2010-11-23 · Original thread
I really love this book, wish more books were like this. I can also recommend:
shaunxcode · 2010-09-17 · Original thread
Get a copy of "The Elements of Computing Systems"

which will seriously take you from logic gate/chip design all the way to scripting languages and an implementation of tetris on a java-esque language/vm. Totally awesome!

You can download the simulation software which is used in the book here if you want to play w/ logic gates/HDL etc. more

jgg · 2010-06-19 · Original thread
UrLicht · 2010-04-26 · Original thread
A little known gem: The Elements of Computing Systems

This book takes you from logic gates to writing your own (extremely simple) virtual machine, programming language, etc. It's a bit fast paced and project based, but it'll run you through a very high level overview of the whole gamut.

stcredzero · 2008-08-13 · Original thread
A job that needs breadth: CIO.

If you want to develop knowledge in depth, this is a good place to start:

Buy the book, download the courseware for free, and learn how computers work from NAND gates up. Implement your own OO language on the hardware you've built and write your own OS in it. Then write games for the resulting system. This will put you ahead of most coders out there.

Fresh book recommendations delivered straight to your inbox every Thursday.