Found in 28 comments
by teacpde
2018-01-05
by mevile
2017-07-30
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.

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

http://www.nand2tetris.org/ is the website for it.


Original thread
by bogomipz
2017-06-11
>"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...


Original thread
by pankajdoharey
2017-03-31
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 https://www.amazon.com/Elements-Computing-Systems-Building-P...
Original thread
by MattSteelblade
2016-12-24
My choice for bottom-up book: The Elements of Computing Systems: Building a Modern Computer from First Principles https://www.amazon.com/Elements-Computing-Systems-Building-P...
Original thread
by seibelj
2016-08-22
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.

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


Original thread
by deepaksurti
2016-05-04
>> "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. http://www.amazon.com/Elements-Computing-Systems-Building-Pr.... Makes you design the hardware, then the software for that hardware.

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


Original thread
by deepaksurti
2016-02-15
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.

[1] http://www.amazon.com/Elements-Computing-Systems-Building-Pr...


Original thread
by bediger4000
2016-01-22
Are you thinking of "The Elements of Computing Systems: Building a Modern Computer from First Principles" <http://www.amazon.com/Elements-Computing-Systems-Building-Pr... by Noam Nisan and Shimon Schocken?
Original thread
by earleybird
2015-09-16
It seems Amazons recommendation system has acquired 'irony' - it's recommending http://www.amazon.ca/Elements-Computing-Systems-Building-Pri.... 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.
Original thread
by notdan
2015-07-07
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

http://www.nand2tetris.org/

http://www.amazon.com/The-Elements-Computing-Systems-Princip...


Original thread
by adamnemecek
2014-09-28
If this is something that tickle's your fancy, you should check out 'The Elements of Computing Systems' http://www.amazon.com/The-Elements-Computing-Systems-Princip....
Original thread
by waterfowl
2014-08-20
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)

http://www.amazon.com/The-Elements-Computing-Systems-Princip...

edit: $30 I guess, still worth it.


Original thread
by bra-ket
2014-05-07
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

1. http://www.quora.com/How-do-I-write-an-operating-system

2. http://www.quora.com/If-you-were-to-write-a-new-operating-sy...

3. http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/...

4. http://www.amazon.com/The-Design-UNIX-Operating-System/dp/01...

5. http://www.amazon.com/The-Elements-Computing-Systems-Princip...

6. http://www.returninfinity.com/baremetal.html


Original thread
by ingrownpsyche
2013-11-09
An adder in functional Verilog:

a + b

Best go with structural if you want to actually learn something. This book ( http://www.amazon.com/The-Elements-Computing-Systems-Princip... ) 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.


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

http://www.amazon.com/The-Elements-Computing-Systems-Princip...

http://www.nand2tetris.org/


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

Compiler Construction: http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf

The Elements of Computing Systems: http://amzn.to/GQycqj

MetaCompilers: http://www.bayfronttechnologies.com/mc_tutorial.html

How to Create Your Own Freaking Awesome Programming Language: http://createyourproglang.com/

Bootstrapping a simple compiler from nothing: http://www.rano.org/bcompiler.html


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

Software programming starting from assembly language under linux : http://www.amazon.com/Programming-Ground-Up-Jonathan-Bartlet...

A study going from chip design to high level programming :

http://www.amazon.com/Elements-Computing-Systems-Building-Pr...

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.


Original thread
by eterps
2012-02-28
And even though the STEPS project above is about software, The Elements of Computing Systems [ http://amzn.to/xMTkWX ] 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: http://bit.ly/ySQf25
Original thread
by abbasmehdi
2011-09-18
Look through this book, I graduated with a degree in ECE 5 years ago, and this book blew me away: http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
Original thread
by shawndumas
2011-02-28
The Elements of Computing Systems: Building a Modern Computer from First Principles[1][2]

----

[1]: http://www1.idc.ac.il/tecs/

[2]: http://www.amazon.com/Elements-Computing-Systems-Building-Pr...


Original thread
by jamii
2010-12-08
> ... 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.

http://www.amazon.co.uk/Elements-Computing-Systems-Building-...


Original thread
by eterps
2010-11-23
I really love this book, wish more books were like this. I can also recommend: http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
Original thread
by shaunxcode
2010-09-17
Get a copy of "The Elements of Computing Systems"

http://www.amazon.com/Elements-Computing-Systems-Building-Pr...

http://books.google.com/books?id=THie6tt-2z8C&dq=the+ele...

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 http://www1.idc.ac.il/tecs/


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

http://www.amazon.com/Elements-Computing-Systems-Building-Pr...

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.


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

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

http://www.amazon.com/Elements-Computing-Systems-Building-Pr...

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.


Original thread

Looking for a good book? Subscribe to the weekly newsletter.