- Paperback: 344 pages
- Publisher: The MIT Press (March 31, 2005)
- Language: English
- ISBN-10: 0262640686
- ISBN-13: 978-0262640688
- Product Dimensions: 8 x 0.7 x 9 inches
- Shipping Weight: 1.2 pounds (View shipping rates and policies)
- Average Customer Review: 97 customer reviews
- Amazon Best Sellers Rank: #35,978 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
The Elements of Computing Systems: Building a Modern Computer from First Principles
Use the Amazon App to scan ISBNs and compare prices.
The Amazon Book Review
Author interviews, book reviews, editors picks, and more. Read it now
Frequently bought together
Customers who bought this item also bought
Customers who viewed this item also viewed
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)
About the Author
Noam Nisan is Professor at the Institute of Computer Science and Engineering, Hebrew University of Jerusalem.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
For Raspberry and Arduino (or Propeller) buffs like me, although this project is all virtual (no physical circuits), the authors have taken nearly 10 years to perfect the sim interfaces to make the experience far more complete than even building a PC from components, or hacking with our favorite chips and boards. This book is the PC version of the now famous Max Maxfield books that teach us to build a virtual calculator (Bebop to the Boolean Boogie, Third Edition: An Unconventional Guide to Electronics AND The Definitive Guide to How Computers Do Math : Featuring the Virtual DIY Calculator).
Frankly it's rare to see authors not only spend this much time on support, then keep it going years later! They also get five stars on textextras dot com for their commitment to keeping the text current. Highly recommended for both classes and self study. Although one 11 year old has built one with help, I'd put this at teen to postgrad. I know, quite a range, but it IS that good.
I grabbed this book because working from the bottom up, from NAND gates to a functional OS, sounded like the best process to learn. I'm on Chapter 6 right now (about half way through the book), and I know I've made the right choice. The best part of this course is that you actually build every single layer of the computer architecture using their free suite of visualization tools. This means that, every time you start a new chapter and take the next step up the ladder of the computer hierarchy to the place you actually live in (i.e. an operating system with a graphical user interface), you understand exactly why you're building what you're building--and how exactly it relates to all the layers beneath it.
I'm not a mathematics guy (I spent seven years in college studying literature; hence why I need this book!), but with some perseverance, several hours spent with a constantly furrowed brow, and a not insignificant amount of cursing, I've been able to puzzle through every single one of the tasks set out by the book so far. If you have some natural curiosity and critical thinking skills, you'll be able to get through this book no matter how non-technical your background is. What's especially helpful is that there are resources outside the book itself: The online forums for this book are (as of April 2014) very active, and you can either wait a day or two to have an expert look at your code and see all the various ways you're screwing up, or you can search to see if your particular question has already been answered (it usually has).
It's not all wine and roses, of course. The UI of the software suite is pretty rough, with a few apparent bugs (I'm using them in a Mac OS, so that might be the root of some of the problems). Also, the hardware description language (HDL) you use in the first half of the book often seems unnecessarily finicky (I hope you didn't put "and" instead of "And" somewhere in your 100 lines of code...). And, though the book mostly follows a path straight up the latter of abstraction, Chapter 4 jumps up to the software (assembly code) level, then follows with Chapter 5, which drops back down into the hardware of the CPU and memory. This structure actually kind of makes sense once you get through both of these chapters (there may be no other way to do it, now that I think about it), but it's pretty disorienting trying to get through the lower layers of software when the hardware is still sitting around in pieces, only half explained. Some context/additional explanation at the beginning of Chapter 4 would have helped with this.
Also note that, when you hit Chapter 6, you'll need some prerequisite high-level coding/scripting experience. It doesn't really matter what language you know; you just need to know one. If you're completely new to coding, I would recommend learning some Python via Codecademy; it'll probably be a month or two detour from the book (depending on how fast you work), but it'll be worth it.
In summary, I can't think of a more efficient way to get a thorough overview of Computer Science than this book. Any shorter of an explanation won't really make sense; any more in-depth of an explanation would probably lose everybody but the people getting college degrees in this stuff. For new students to the field, or for amateurs with an interest, this book hits the sweet spot.