Nice. I did an EE degree many years ago even though I wanted to work in software. The single best course I did was to design, simulate and have fabricated a 4 bit microprocessor. It completely solidified my understanding of how computations took place. Hopefully, texts like this will do the same for others.
I love this kind of Books! In a much more general tone, there is "The Knowledge: How To Rebuild Our World After An Apocalypse" by Lewis Dartnell. This explains the first principles of a lot of things we take for granted in the modern world, from agriculture to food and clothing, medicine, chemistry and more.<p>This book about CS principles is a great complement to that!
One of my favorite books on subject is The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan
<a href="https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686" rel="nofollow">https://www.amazon.com/Elements-Computing-Systems-Building-P...</a>
I recommend Code: The Hidden Language of Computer Hardware and Software by Charles Petzold [1]. It is far more comprehensive than the OP, goes from pre-computer code, to electrical circuits, to an overview of assembly. No prior knowledge needed except how to read.<p>1. <a href="https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319" rel="nofollow">https://www.amazon.com/Code-Language-Computer-Hardware-Softw...</a>
For a do-it-yourself version of chapter 1 (about building complex circuits using only nands), I can recommend <a href="http://nandgame.com/" rel="nofollow">http://nandgame.com/</a>
<i>A few years ago, I asked my engineer friend about how much of civilization he could rebuild singlehandedly, should he survive some hypothetical apocalyptic event. “All of it,” he replied. “Not all at once, but I know enough to be able to puzzle together the pieces I don’t know right this second.”</i><p>While I admire the Connecticut-Yankee optimism of the engineer, as a non engineer I am seriously skeptical about how a single engineer could know enough about the chemistry, materials, physics, CS etc. I can explain what a battery, or transistor is supposed to do but wouldn't have the foggiest idea how to actually make one. In this scenario are we leaving the bunker to break into Bell Labs (or some research university library at least)?
Half-way into it’s introducing monads and Maybe. Feels like teaching a stack machine after talking about the visitor pattern. There’s good information here but I’m not sure it covers the important fundamentals (such that I could give to a beginner).
This looks really cool, thank you.<p>Another book I particularly like in the same style are Feynman (lesser known) lectures on computation: <a href="https://amzn.to/2SSoJaR" rel="nofollow">https://amzn.to/2SSoJaR</a> where he takes you from single instructions all the way to quantum computing
Neat, and it looks like it's under a 3-clause BSD license, too: <a href="https://github.com/isovector/reasonablypolymorphic.com/blob/master/LICENSE" rel="nofollow">https://github.com/isovector/reasonablypolymorphic.com/blob/...</a><p>And it's tackling pretty advanced material — a bunch of category-theory stuff that I have no idea about. This is exciting!<p>It looks like maybe it's unfinished: <a href="https://reasonablypolymorphic.com/book/tying-it-all-together.html" rel="nofollow">https://reasonablypolymorphic.com/book/tying-it-all-together...</a> ends, "Really, we’re just getting started," and then (the current version of) the book ends. What a cliffhanger ending!<p>It doesn't seem to yet cover circuitry; the hardware it discusses seems to be a two-tape Turing machine, much like BF. The author seems to have been simulating the machine by hand to generate the included execution traces.<p>I had a hard time finding the source at first: <a href="https://github.com/isovector/reasonablypolymorphic.com/blob/master/site/static/book/machine-diagrams.html" rel="nofollow">https://github.com/isovector/reasonablypolymorphic.com/blob/...</a> has a bunch of attribute-embedded &-escaped SVG (including XMLPIs!) that he almost certainly didn't type like that. That file is duplicated at <a href="https://github.com/isovector/reasonablypolymorphic.com/blob/master/docs/book/machine-diagrams.html" rel="nofollow">https://github.com/isovector/reasonablypolymorphic.com/blob/...</a> in the same format.<p>As it turns out, the source for that post is in <a href="https://github.com/isovector/reasonablypolymorphic.com/blob/master/site/httw/2016-11-01-machine-diagrams.markdown" rel="nofollow">https://github.com/isovector/reasonablypolymorphic.com/blob/...</a>, with embedded Haskell to produce the SVGs. The build scripts looks like they might be in <a href="https://github.com/isovector/reasonablypolymorphic.com/tree/master/src" rel="nofollow">https://github.com/isovector/reasonablypolymorphic.com/tree/...</a> and <a href="https://github.com/isovector/reasonablypolymorphic.com/tree/master/scripts" rel="nofollow">https://github.com/isovector/reasonablypolymorphic.com/tree/...</a> but I can't tell where the code for generating SVG comes from. ("stack install" maybe? But then is it datetime, sitepipe, or strptime?) So I can't figure out how to fix the text in the SVGs to not crash into the diagram lines.<p>Careful about cloning the repo. It's a quarter gig!
I never heard of "first principles" until Elon Musk used it. (Not a native English speaker) Now I see it everywhere.<p>Must be the new overhyped term. "We start from first principles, just like Elon Musk".<p>After looking at Google trends, I might be wrong, so nevermind ;) <a href="https://trends.google.com/trends/explore?date=all&q=First%20principles" rel="nofollow">https://trends.google.com/trends/explore?date=all&q=First%20...</a>