Start reading The Elements of Computing Systems on your Kindle in under a minute. Don't have a Kindle? Get your Kindle here or start reading now with a free Kindle Reading App.

Deliver to your Kindle or other device


Try it free

Sample the beginning of this book for free

Deliver to your Kindle or other device

Anybody can read Kindle books—even without a Kindle device—with the FREE Kindle app for smartphones, tablets and computers.
The Elements of Computing Systems: Building a Modern Computer from First Principles

The Elements of Computing Systems: Building a Modern Computer from First Principles [Kindle Edition]

Noam Nisan , Shimon Schocken
5.0 out of 5 stars  See all reviews (4 customer reviews)

Print List Price: £21.95
Kindle Price: £19.63 includes VAT* & free wireless delivery via Amazon Whispernet
You Save: £2.32 (11%)
* Unlike print books, digital books are subject to VAT.


Amazon Price New from Used from
Kindle Edition £19.63  
Hardcover --  
Paperback £20.66  
Kindle Daily Deal
Kindle Daily Deal: At least 60% off
Each day we unveil a new book deal at a specially discounted price--for that day only. Learn more about the Kindle Daily Deal or sign up for the Kindle Daily Deal Newsletter to receive free e-mail notifications about each day's deal.

Special Offers and Product Promotions

  • Purchase any Kindle Book sold by and receive £1 credit to try out our Digital Music Store. Here's how (terms and conditions apply)

Product Description


"A refreshingly new way of looking at computer systems as a whole by considering all aspects of a complete system in an integrated manner." Jonathan Bowen Times Higher Education Supplement

Product Description

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 best way to understand how computers work is to build one from scratch, and this textbook leads students through twelve chapters and projects that gradually build a basic hardware platform and a modern software hierarchy from the ground up. In the process, the students gain hands-on knowledge of hardware architecture, operating systems, programming languages, compilers, data structures, algorithms, and software engineering. Using this constructive approach, the book exposes a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other courses fit into the overall picture.Designed to support one- or two-semester courses, the book is based on an abstraction-implementation paradigm; each chapter presents a key hardware or software abstraction, a proposed implementation that makes it concrete, and an actual project. The emerging computer system can be built by following the chapters, although this is only one option, since the projects are self-contained and can be done or skipped in any order. All the computer science knowledge necessary for completing the projects is embedded in the book, the only pre-requisite being a programming experience.The book's web site provides all tools and materials necessary to build all the hardware and software systems described in the text, including two hundred test programs for the twelve projects. The projects and systems can be modified to meet various teaching needs, and all the supplied software is open-source.

Product details

  • Format: Kindle Edition
  • File Size: 6531 KB
  • Print Length: 344 pages
  • Publisher: The MIT Press (25 Jan 2008)
  • Sold by: Amazon Media EU S.à r.l.
  • Language: English
  • Text-to-Speech: Enabled
  • X-Ray:
  • Average Customer Review: 5.0 out of 5 stars  See all reviews (4 customer reviews)
  • Amazon Bestsellers Rank: #81,067 Paid in Kindle Store (See Top 100 Paid in Kindle Store)
  •  Would you like to give feedback on images?

More About the Authors

Discover books, learn about writers, and more.

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

4 star
3 star
2 star
1 star
5.0 out of 5 stars
5.0 out of 5 stars
Most Helpful Customer Reviews
5 of 5 people found the following review helpful
5.0 out of 5 stars Outstanding 10 Mar 2012
By Jesper
If you want to gain a decent understanding of how computers work without spending half your life doing so, look no further. This book explains computer systems from the ground up, from basic hardware components to high-level languages, covering assemblers, compilers, virtual machines, operating systems and more along the way. The authors advocate a hands-on approach: for each major system covered, they define an associated project that involves constructing and testing the system. At least for me, this is a very fun and effective way to learn. The authors have an infectious enthusiasm for the subject, and their prose is both clear and engaging. This is an exceptionally well-written book.
Comment | 
Was this review helpful to you?
5.0 out of 5 stars I heartily recommend as a little project 11 July 2014
Format:Paperback|Verified Purchase
have only got through the first two chapters so far but am having a whale of a time, the book doesn't really tell you what to do, it just lists components that need to be created ( i.e. what their properties need to be) and you fill in the blanks, however it seems that it lists them in approximately the order you would need to construct them anyway. I heartily recommend as a little project, as each chapter is self contained so it's perfect to dive in and out of, if you're still not sure you can even read the first 6 chapters on the course's website
Comment | 
Was this review helpful to you?
The book is accompanied by software to create simulations of NAND-based components. The software is available on-line at the page referenced in the book.
Comment | 
Was this review helpful to you?
0 of 2 people found the following review helpful
Format:Paperback|Verified Purchase
I have not read it all yet, but so far it is very good and I am looking forward to enjoying the project in its entirety.
Check out one of the authors on for his short talk on the self-organising computer course for details about the book and the course.
Comment | 
Was this review helpful to you?
Most Helpful Customer Reviews on (beta) 4.7 out of 5 stars  49 reviews
125 of 127 people found the following review helpful
5.0 out of 5 stars Fantastic book--Ideal for self-study 15 Nov 2005
By Jonathan Yedidia - Published on
I highly recommend this book if you are interested in learning about computer science. The book is organized around the idea of building a computer from the fundamental logic gates up--starting with the hardware (combinational logic gates, arithmetic logic units, sequential logic gates, the CPU and memory) and then through the software hierarchy (starting with the machine language, and working up through the assembler, a virtual machine, a compiler for a high-level language, and an operating system). As a "by-product," one learns, by very relevant examples, many fundamental concepts of computer science.

You can just read the book, but the best idea is to follow the authors' advice and do the projects where you implement every necessary piece of the computer system yourself. The projects are all very well organized. All the software necessary to emulate any part of the computer is available for free download from the authors' web-site. It all works beautifully. If you want to skip any of the projects, you can, because the software is organized in such a way that it will use built-in modules instead of the ones you built if necessary.

The authors seem to have extensively tested the whole approach through the courses they have taught using this material. I also noticed that Harvard's Computer Science 101 course is being taught based on this book. I have been using the book for self-study with absolutely no problems--in fact I have never had such a great experience with a self-study course. All you need is a Windows or Linux (edit: Mac OS X works fine too) computer and access to the internet, and you can give yourself a wonderful education in computer science.

In terms of prerequisites, you only really need to have some experience with programming (e.g. with C, or ideally with Java or Python). I think that the book should work well for students or hobbyists who don't have any more experience than that, but it is also great for much more experienced students, as a kind of integrative summary of the field. I also think the book is perfect for graduate students or researchers from other fields who want to learn how digital hardware and software systems are actually engineered.

Finally, I just want to compliment the authors on the extraordinary care that they have taken with the whole project. The computer design that you build up is wonderfully elegant--at every stage the design is just as simple as it can be while being sufficient. Every piece of emulation software works as advertised. Even the extra powerpoint or .pdf tutorials are nicely done. This is really quality work, and using it is just a real pleasure. Finally, the source code for all the software provided by the authors is available, so if you wanted to extend the provided emulators, you could do that.

In summary, I give this book my unqualified highest recommendation.
42 of 43 people found the following review helpful
5.0 out of 5 stars Without any alternative 27 May 2009
By Emre Sevinc - Published on
Format:Paperback|Verified Purchase
I have used this book in my computer organization class (Istanbul Bilgi University, Computer Science dept.) and I must admit that it brought a very fresh perspective to second year computer science students. For the first time they were able to see the process of designing a computer from the ground up.

The book is very suitable for self-study or classroom use: it has an excellent website, all the required HDL simulator, assembler, CPU and VM emulator and compiler are freely available and easy to run on any platform (they are all coded in Java).

Of course there are simplifications such as the lack of interrupts and multhithreading but this book prepares the students very well for 3rd and 4th year courses. Every chapter has very well and clearly defined goals and projects that are %100 self-contained. That means even if you skip a chapter you can work out the next project without any loss in implementation.

If you or your students want to have a grasp what it means to build a computer starting from logic gates, hardware definition languages, up to the ALU, RAM, CPU, assembler, virtual machine and compilation of an object oriented high level language, then this book is the best choice. It is one of the most hands-on book I've ever seen in this subject matter and at that intermediate level.
22 of 22 people found the following review helpful
5.0 out of 5 stars If only I could give more than 5 stars 28 Aug 2009
By R. MCRACKAN - Published on
Format:Paperback|Verified Purchase
I have nothing but the most positive things to say about The Elements of Computing Systems. If you ever wanted to know how a computer worked -- I mean REALLY know -- read Charles Petzold's book CODE. If you also wanted to BUILD a computer, read The Elements of Computing Systems. This book takes you from a single basic logic gate to a working computer, then proceeds to design software and even a simple operating system that runs on it. (Caveat: there are 2 things you do not create yourself: the system clock and the base module for flip-flops. There's a good reason why for each. Again, to understand these parts better, I highly recommend Petzold's CODE.) All chapters are independent and can be done in any order, but the order they have it in is best. I think the authors intend for TECS to be a textbook for a class but I'm reading it on my own and it's perfect for self study. Before you read, make sure you consult the book's website's errata because there are a few typos.

I also have nothing but the highest praises for the accompanying software. The authors make freely available a small open source software suite to help develop the computer you're making. Full tutorials are online. The test suites are fully scriptable. The scripts for actually testing your work are included and there's also an appendix in the book explaining the scripting language used. The software is all written in Java and will run on Windows, Linux, or Mac.

Everything is kept as simple as possible without sacrificing any understanding. A perfect learning tool.
17 of 17 people found the following review helpful
5.0 out of 5 stars This Book is One of a Kind, and a True Masterpiece 7 Jun 2010
By Devin Nickol - Published on
Format:Paperback|Verified Purchase
I've been a computer hobbyist since the first days of the Apple ][, and have dabbled in everything from programming to circuit board design. Despite all that time spent, there have always been huge holes in my understanding. In the back of my mind, I've always dreamed of building a simple computer from a handful of chips, designing an operating system for it, and using it to write programs. Unfortunately, the complexity of the task always seemed overwhelming. Assembly language, stack arithmetic, compiler design - all seemed much too intimidating to seriously approach. But no longer.

This book guides the reader on a journey from the basics of boolean logic and elementary gates through CPU design, assembly, virtual machines, high level languages, compilers and operating systems. How can such a task be accomplished in one 300-page volume? Simple - you do most of the work yourself. The relatively short chapters introduce each concept and suggest an approach to implementation. The reader is then given a project to complete and test. Intimidated by assembly language? You probably won't be after you've written a symbolic assembler. Confused by compilers? Imagine how you'll feel when you realize you've created one for a simple (but completely usable) high-level language.

Some degree of familiarity with a programming language will be needed to complete all of the later projects in this book. I used Java, and it worked like a charm. I'm just about finished with the book, and I'm trying to decide what to do next. I'm actually sad to be almost done! I plan to fulfill that original dream of building an actual computer from scratch - several modern microcontrollers can handle video output and keyboard input, so I think it will be doable. I feel pretty confident that after completing this book I'll be able to create a basic operating system and development toolset, which I can then spend countless hours extending!

In summary, if you want to gain an understanding of how computers really work, and if you're willing to learn by doing, this is the best book I've ever seen. I wish I could shake the authors' hands to thank them personally.
30 of 33 people found the following review helpful
5.0 out of 5 stars High-quality accessible projects, ideal for self-study 19 May 2008
By Amazon Customer - Published on
I highly recommend this project-based book to anyone with a passion for programming and the curiosity to dig below its high-level incarnations. This book will show you how to build a computing system from the ground up. In the process, you'll learn about combinatorial & sequential logic, ALU & memory chips, CPU & von Neumann architecture, machine & assembly language, assemblers, virtual machines, parsing and code generation. The hardware part is built using a freely provided Hardware Simulator and the software part can be tackled in any programming language(s) you choose. You can get started right now by going to the book's website, [...], which has some sample chapters and all the tools (like the Hardware Simulator) you'll need to complete these wonderful projects. Each project comes with extensive test cases, giving you immediate feedback on your progress.
Were these reviews helpful?   Let us know
Search Customer Reviews
Only search this product's reviews

Popular Highlights

 (What's this?)
every Boolean function can be expressed using at least one Boolean expression called the canonical representation. &quote;
Highlighted by 22 Kindle users
“the only kind of learning which significantly influences behavior is self-discovered or self-appropriated—truth that has been assimilated in experience.” &quote;
Highlighted by 19 Kindle users
A Boolean function is a function that operates on binary inputs and returns binary outputs. &quote;
Highlighted by 16 Kindle users

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
First post:
Prompts for sign-in

Search Customer Discussions
Search all Amazon discussions

Look for similar items by category