The Elements of Computing Systems, Second Edition
Building a Modern Computer from First Principles
A new and extensively revised edition of a popular textbook used in universities, coding boot camps, hacker clubs, and online courses.
The best way to understand how computers work is to build one from scratch, and this textbook leads learners through twelve chapters and projects that gradually build the hardware platform and software hierarchy for a simple but powerful computer system. In the process, learners gain hands-on knowledge of hardware, architecture, operating systems, programming languages, compilers, data structures and algorithms, and software engineering. Using this constructive approach, the book introduces learners to a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other computer science courses fit into the overall picture. The outcome of these efforts is known as Nand to Tetris: a journey that starts with the most elementary logic gate, called Nand, and ends, twelve projects later, with a general-purpose computer system capable of running Tetris. The first edition of this popular textbook inspired Nand to Tetris classes in universities, coding boot camps, hacker clubs, and online course platforms. This second edition has been extensively revised. It has been restructured into two distinct parts—Part I, hardware, and Part II, software—with six projects in each part. All chapters and projects have been rewritten, with an emphasis on separating abstraction from implementation, and many new sections, figures, and examples have been added. Substantial new appendixes offer focused presentation on technical and theoretical topics.