The Elements of Computing Systems, second edition
Building a Modern Computer from First Principles
344 pp., 8 x 9 in, 116 b&w illus.
- Published: June 15, 2021
- Published: June 15, 2021
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, software engineering, and relevant algorithms and data structures. Using this constructive approach, the book introduces readers to a significant body of computer science knowledge and synthesizes key theoretical and applied techniques into one constructive framework.The outcome 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 and any other program that comes to your mind.
The first edition of this popular textbook inspired Nand to Tetris courses in many 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.
“Nisan and Schocken have created a masterpiece in this book that spans from 'Human Thought' to 'Logic Gates' at just about perfect depth. Be it as simple as writing a for-loop or designing an OR gate or as complex as building a full-fledged computer or a compiler, each element is explained with the same ease, and is given 'life' with a fully supported tool-set for us to build with.”
Aakash Tyagi, Professor of the Practice, Texas A&M University
This book shows that, despite the complexity of modern architectures, it is still possible to fully understand and master computers. The secret recipe is focus in this case, because the authors dispense with error handling and optimization; they only present the essentials. Compared to its predecessor, the second edition offers a clearer separation between hardware and software.