The topics are well-selected and certainly represent the array of concepts that someone going beyond just an introduction to a computer science textbook or course should know (data representation, boolean logic and boolean algebra, assembly language basics, ISAs, memory, etc.). The authors, though, sorely overestimate their own ability to explain the processes and algorithms through which the concepts listed above are implemented and put to practical use. Their exposition of things like the history of computer architectures is mostly clear but when they start explaining how to calculate components of addresses mapped to cache, for example, paragraphs stop having meaningful breaks and there is little evidence that they gave these explanations, during the editing stage, to an intelligent reader who didn't understand how these things worked yet and asked them if the explanations were comprehensible (and complete). I was able to make it through each chapter but had to have recourse to You Tube videos or online materials. Many was the time I would bang my head trying to understand the authors' incomplete expositions only to find a video made by a college student who explained everything clearly and completely and with meaningful examples in much less time (perfect example is Booth's algorithm: I would love to find anyone who said they learned Booth's algorithm from this book; in contrast, if you ever want to learn Booth's algorithm: just watch this youtube video: https://www.youtube.com/watch?v=1ubyX...).
Here's the problem: given that we are talking about computer science, by definition all of the concepts in this textbook can be broken down into discrete steps that could be explained clearly and discretely and completely. But somehow, I suspect, the authors thought, no, I can't make it sound too easy because then I seem less smart and the book won't be taken as seriously. Enter vague wording, incomplete examples left to the reader to figure out...magically? and abbreviated explanations. The book is the result of authors who wanted to write something more in depth than an introduction to computer science textbook but didn't have the stamina and commitment to actually stick with the complex topics and infuse them with the thoroughness they deserve. What we get is a book that tries to please everyone and teaches no one.
Terrible. Horrible. AWFUL. Simple concepts get undue coverage and the same thing explained many times, while the harder concepts are glossed over, with NO explanations of how to do the more complicated questions at the end of the chapters.
This might be good for a "survey" course, but any course that expects hard analysis of the concepts --forget it. They're not covered in the text.
4.0 out of 5 stars Follows its Charter, But... June 20, 2007
I'm in a quandary about how to rate this book. On one hand, it's well written and organized, and definitely follows its charter. From page ix of the Preface, the authors state:
"...we hope to convey the spirit of design used in the development of modern computing systems and what impact this has on computer science students.... Most organization and architecture textbooks present a similar subset of technical information regarding these basics. We, however, pay particular attention to the level at which the information should be covered, and to presenting that information in the context that has relevance for computer science students."
Essentially, the book covers everything a Computer Science (CS) student would need to know (at a fairly high level) about computer systems, their peripherals, and their interconnections. However (and this is the "other hand"), because of their focus on "relevance for computer science students," this book reads more like an extension to a CS "survey" book than it does to a Computer Architecture book.
Though interesting and useful, most of the material (well over 50%, and maybe up to 75%) duplicates material from other courses in a CS degree. To me, every chapter except 4, 5, and 6 resembles summaries of other courses the CS student will take later (actually, chapters 1, 2 and 3 would be from that real "survey" course). Along with the duplication of material, this means that nothing gets covered in depth. Once things get technical, the authors gloss over the details and move on.
Personally, I think that Patterson & Hennessy's Computer Organization and Design: The Hardware/Software Interface, Third Edition (The Morgan Kaufmann Series in Computer Architecture and Design) (The ... Series in Computer Architecture and Design) is a much better book for learning Computer Architecture and Organization. That book is definitely hard slogging for CS-types and has quite a few editing and organization rough spots. But, it covers the area well and without duplication. Still, because THIS book is true to its stated aims and is very well written, I have to give it a Very Good 4 stars out of 5 rating (though I'd really like to reduce that to an OK 3 stars out of 5).
Text fails to explain many of the things that are asked of the student in the chapter end questions. Many typos in this edition make for even more confusion for the naive student.
This book is terrible. Only get it if you're reading a course that absolutely demands it, otherwise there are bound to be numerous better options out there to learn the same things.