
The Elements of Computing Systems
Building a Modern Computer from First Principles
by Noam Nisan, Shimon Schocken · first published 2005
76% recommend23% neutral1% critical
Why HN recommends it
Project-driven walk up the whole stack, from NAND gates to an ALU, CPU, VM, compiler and a high-level language. Suits software people who want to see concretely how a computer works.
Summarised by Claude from recommending comments
In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system. Indeed, the b
Affiliate links. As an Amazon Associate I earn from qualifying purchases.








Start with "The Elements of Computing Systems" by Nisan and Schocken. It's a book built around the goal of designing and constructing a computer from the ground up, starting with hardware design and ultimately writing the compiler and virtual machine…
on “Ask HN: What if I missed the good stuff in my undergraduate education?” ↗Elements of Computing Systems by Nisan and Schocken has you 'build' a computer from basic logic gates to CPU/Memory to assembler, VM, etc. all the way to a running program. https://www.nand2tetris.org/
on “Ask HN: What are some books where the reader learns by building projects?” ↗Hmm. No one has mentioned Elements of Computing Systems: Building a Modern Computer from First Principles by Nissan and Schocken (which is absolutely superb).
on “Ask HN: Would self-taught programmers be interested in such a book?” ↗The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken Basically it has you hands on work through the basics of every concept active in a modern computer save for networks…
on “Ask HN: What's the best computer science book you've read recently?” ↗The course is good, the book is better, in my opinion. Although it covers the same, but I like its presentation much better than the video course. Nisam/Schocken: "The Elements of Computing Systems" I have only finished the hardware part, so far, but skimming the rest I can't find Tetris anywhere. Is that really missing, although it's in the title? (I know that you can program Tetris on the machine…
on “Ask HN: Top Coursera Courses?” ↗If you're actually looking for something that does build to a virtual computer, Nand2Tetris (second edition of the book The Elements of Computing Systems that goes with it is now out) is a great companion to Code: https://www.nand2tetris.org/. Code is more high level, Nand2Tetris and Elements is project based but covers some similar territory.
on ““Code” 2nd Edition” ↗…C Programming: Deep C Secrets" by Peter van der Linden Publisher: Prentice Hall "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin Publisher: Prentice Hall "The Elements of Computing Systems: Building a Modern Computer from First Principles" by Noam Nisan Publisher: The MIT Press "Code Complete: A Practical Handbook of Software Construction, Second Edition" by Steve McConnell Publisher:…
on “Top Books on Amazon Based on Links in Hacker News Comments” ↗You're fooling no-one, Shimon... ;) Just a joke: the course is by Noam Nisan & Shimon Schocken The accompanying book is "The Elements of Computing Systems" and Part 1 is available as a course on Coursera. I highly recommend it; just finishing the Coursera course myself and I'll definitely be doing Part 2.
on “Ask HN: What are some books where the reader learns by building one project?” ↗This course seems to be by the authors (and based upon) The Elements of Computing Systems, a truly marvellous introduction to computer architecture that holds the readers' hand as they construct a system from the hardware up. I cannot recommend it enough.
on “Build a Modern Computer from First Principles: Nand to Tetris Part II” ↗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...…
on “Build an 8-bit computer from scratch” ↗One of my favorite books on subject is The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan https://www.amazon.com/Elements-Computing-Systems-Building-P...
on “How These Things Work – A book about CS from first principles (2016)” ↗“ Code: The Hidden Language of Computer Hardware and Software” by Charles Petzold and “The Elements of Computing Systems” by Noam Nisan and Shimon Shocken are both a great introduction.
on “Ask HN: What huge mistake did you make early in your career?” ↗“The Elements of Computing Systems”, by Nisan and Schocken, starts at logic gates and works up to a functional computer that can play Tetris. So not quite Ohm’s Law, but close. https://www.nand2tetris.org/book
on “Ask HN: Is there any book like: from ohms law to 8 bit computer” ↗…slightly different things. For "how computers work?" I recommend Code by Petzold (higher level, good book) and The Elements of Computing Systems by Nisan and Schocken (also available here: https://www.nand2tetris.org/). The latter is project based and has you develop a computer starting at NAND gates and working up. It can be run through at a good clip while still learning a lot if you're a moderately experienced…
on “Ask HN: Best way to learn about computing history?” ↗…lot of universities use this book in a second-year architecture course. In terms of relating this information to the overall hierarchy of computer systems, I would also recommend Nisan and Schocken's Elements of Computing Systems.
on “Ask HN: Best way to learn about computing history?” ↗