• List Price: CDN$ 196.05
  • You Save: CDN$ 11.92 (6%)
Only 1 left in stock.
Ships from and sold by Amazon.ca. Gift-wrap available.
Computer Systems: A Progr... has been added to your Cart
+ CDN$ 6.49 shipping
Used: Good | Details
Condition: Used: Good
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Computer Systems: A Programmer's Perspective (2nd Edition) Hardcover – Feb 4 2010

4.0 out of 5 stars 1 customer review

See all 2 formats and editions Hide other formats and editions
Amazon Price
New from Used from
Kindle Edition
"Please retry"
"Please retry"
CDN$ 184.13
CDN$ 75.86 CDN$ 61.98

There is a newer edition of this item:

Harry Potter and the Cursed Child
click to open popover

Special Offers and Product Promotions

  • You'll save an extra 5% on Books purchased from Amazon.ca, now through July 29th. No code necessary, discount applied at checkout. Here's how (restrictions apply)

Frequently Bought Together

  • Computer Systems: A Programmer's Perspective (2nd Edition)
  • +
  • Objects, Abstraction, Data Structures and Design: Using C++
Total price: CDN$ 371.08
Buy the selected items together

No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.

  • Apple
  • Android
  • Windows Phone
  • Android

To get the free app, enter your mobile phone number.

Product Details

  • Hardcover: 1080 pages
  • Publisher: Pearson; 2 edition (Feb. 4 2010)
  • Language: English
  • ISBN-10: 0136108040
  • ISBN-13: 978-0136108047
  • Product Dimensions: 19 x 4.1 x 23.6 cm
  • Shipping Weight: 1.6 Kg
  • Average Customer Review: 4.0 out of 5 stars 1 customer review
  • Amazon Bestsellers Rank: #245,929 in Books (See Top 100 in Books)
  •  Would you like to update product info, give feedback on images, or tell us about a lower price?

  • See Complete Table of Contents

Product Description

From the Back Cover

Bryant and O'Halloran explain the important and enduring concepts underlying all computer systems, and show the concrete ways that these ideas affect the correctness, performance, and utility of application programs. The book's concrete and hands-on approach will help readers understand what is going on “under the hood of a computer system.
This book focuses on the key concepts of basic network programming, program structure and execution, running programs on a system, and interaction and communication between programs.
For anyone interested in computer organization and architecture as well as computer systems.

About the Author

Randal E. Bryant received the Bachelor's degree from the University of Michigan in 1973 and then attended graduate school at the Massachusetts Institute of Technology, receiving the Ph.D. degree in computer science in 1981. He spent three years as an Assistant Professor at the California Institute of Technology and has been on the faculty at Carnegie Mellon since 1984. He is currently the President's Professor of Computer Science and head of the Department of Computer Science. He also holds a courtesy appointment with the Department of Electrical and Computer Engineering.

He has taught courses in computer systems at both the undergraduate and graduate level for over 20 years. Over many years of teaching computer architecture courses, he began shifting the focus from how computers are designed to one of how programmers can write more efficient and reliable programs if they understand the system better. Together with Prof. O'Hallaron, he developed the course "Introduction to Computer Systems" at Carnegie Mellon that is the basis for this book. He has also taught courses in algorithms and programming.

Prof. Bryant's research concerns the design of software tools to help hardware designers verify the correctness of their systems. These include several types of simulators, as well as formal verification tools that prove the correctness of a design using mathematical methods. He has published over 100 technical papers. His research results are used by major computer manufacturers including Intel, Motorola, IBM, and Fujitsu. He has won several major awards for his research. These include two inventor recognition awards and a technical achievement award from the Semiconductor Research Corporation, the Kanellakis Theory and Practice Award from the Association for Computer Machinery (ACM), and the W. R. G. Baker Award and a Golden Jubilee Medal from the Institute of Electrical and Electronics Engineers (IEEE). He is a Fellow of both the ACM and the IEEE.

David R. O'Hallaron received the Ph.D. degree in computer science from the University of Virginia in 1986. After a stint at General Electric, he joined the Carnegie Mellon faculty in 1989 as a Systems Scientist. He is currently an Associate Professor in the Departments of Computer Science and Electrical and Computer Engineering.

He has taught computer systems courses at the undergraduate and graduate levels, on such topics as computer architecture, introductory computer systems, parallel processor design, and Internet services. Together with Prof. Bryant, he developed the course "Introduction to Computer Systems" that is the basis for this book.

Prof. O'Hallaron and his students perform research in the area of computer -systems. In particular, they develop software systems to help scientists and engineers simulate nature on computers. The best known example of their work is the Quake project, a group of computer scientists, civil engineers, and seismologists who have developed the ability to predict the motion of the ground during strong earthquakes, including major quakes in Southern California, Kobe, Japan, Mexico, and New Zealand. Along with the other members of the Quake Project, he received the Allen Newell Medal for Research Excellence from the CMU School of Computer Science. A benchmark he developed for the Quake project, 183.equake, was selected by SPEC for inclusion in the influential SPEC CPU and OMP (Open MP) benchmark suites.

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

4.0 out of 5 stars
5 star
4 star
3 star
2 star
1 star
See the customer review
Share your thoughts with other customers

Top Customer Reviews

Format: Hardcover Verified Purchase
I've finished reading this book cover to cover after about 4 months and found the first few chapters (number representation, Assembly and processor architecture) cover materials in more depth compared to later chapters (e.g Unix signalling, network programming and concurrent programming). I suppose it's reasonable to only 'scratch the surface' on these more advanced topics, since in depth discussions would require a book of much larger volume (likely multiple books). In the bibliography at the end of each chapter, the authors provide a list of suggested readings for more comprehensive study on the main topics covered in that chapter. Overall, I think this is a great option for textbook that could be used for a typical sophomore level computer organization class, while also provides introduction to more advanced topics that are usually taught in upper year classes.
Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again.
Report abuse

Most Helpful Customer Reviews on Amazon.com (beta)

Amazon.com: HASH(0x9c6ba3f0) out of 5 stars 83 reviews
78 of 81 people found the following review helpful
HASH(0x9cb35fcc) out of 5 stars Everything you need to know as a programmer March 24 2005
By AmazonBuyer - Published on Amazon.com
Format: Hardcover
What a splendid book! I wish I had gone to CMU and take this course. This book is written by CMU professors after teaching Computer Systems course for few years. This book covers broad spectrum of topics from Operating Systems, Compilers, Computer Architecture, Assembly Level Programming, Kernel internals, Linkers, etc from a programmer's perspective (as the title aptly says).

I am searching for words to describe the usefulness of this book. In my experience, I have had hard time learning some of the topics where Operating systems, Processor and Compilers intersect. For example, Linkers and Loaders, program disassembly using reverse-engineering, virtual memory in Kernel etc. After all the hard work, I found the right book which grinds all the famous books in different areas and gives the right juice for the real programmers to taste and digest.

Those famous books are:
[1] Computer Organization and Design Second Edition : The Hardware/Software Interface by David A. Patterson, John L. Hennessy
[2] UNIX Internals: The New Frontiers by Uresh Vahalia
[3] Linux Kernel Development by Robert Love
[4] Linkers and Loaders by John R. Levine
[5] GNU Binutils (GAS, objdump, ar, nm etc) Documentation

Excellent job. I really appreciate the work and content of this book.
155 of 167 people found the following review helpful
HASH(0x9c6bb980) out of 5 stars DO NOT buy the Kindle version Sept. 14 2011
By Amazon Customer - Published on Amazon.com
Format: Kindle Edition Verified Purchase
There are too many typos. It's a complete waste of money and time trying to decipher some of the formulas, where variables like x' can sometimes mixed up with x'', where there is poor spacing between different formulas, etc. There are even basic word typos ("buy" for "by").

I'm having to purchase the physical edition.

UPDATE: I bought the physical version. Wow. All those typographical errors in the Kindle version really screwed me over for the upcoming homework. Complete formulas were left out. Avoid.

Example: (|V| o) ....is actually supposed to be (|V|>>0). There are MORE significant examples than this one, where incorrect notation can make or break your understanding.
37 of 39 people found the following review helpful
HASH(0x9c829744) out of 5 stars I love this book Nov. 18 2003
By goldenv - Published on Amazon.com
Format: Hardcover
Have it on my desk since I bought for my computer architecture course (Csci 2021, Univ. of Minnesota - Twin Cities). Such a cool book to learn how computer hardware and software *really* work together, and why finding that out, could make us a more valuable computer scientist/programmer. Also provides a great hand to get you ready for advanced classes like Operating Systems, Compilers. My favorite chapter in the book is about Caches. It's unbelievable to first find out how much cached really matter! Thanks Prof. Bryant and O'Hallaron.
I think the first 7 chapters are what the most important to understand and grasp. Rest of the chapters are important too but they usually will overlap with other topics/classes like operating systems. Also, chapter 4 goes in more detail in processor architecure like pipelined CPU and will probably help more to the computer engineer; although computer scientists do learn a lot out of it and will help write code to exploit modern pipelined CPU's, like the deeply pipelined, Pentium 4. But I think the first 7 chapters are the ones, that sets this book aside from the others. You will need access to LINUX, as most of the discussions rotate around it like the virtual address space, assembly code - GAS and so on use the linux implementations.
After reading, you will be able tp convert decimal nos to binary and even floating point nos to binary format very easily. You will also learn more about twos complement operations and integer and floating point arithmetic, able to understand assembly code (GAS: GNU Assembler code), how procedures are implemented using stacks array allocation, debugging, embedding assembly code in C programs, more about CPU instruction sets and hardware control language and their implementations, pipelining, optimizing programs and expoliting caches, understanding modern CPU's, various storage technologies, linking, symbol tables, object files, shared object files, and more.
Don't forget to visit the book's website before buying the book. It is <[...]
Here is a brief look about what it is all about!
Chapter 1: A Tour of Computer Systems
Chapter 2: Representing and Manipulating Information
Chapter 3: Machine-Level Representation of Programs
Chapter 4: Processor Architecture [MORE FOR COMPUTER ENGINEERS!]
Chapter 5: Optimizing Program Performance
Chapter 6: The Memory Hierarchy [COOL ONE!]
Chapter 7: Linking
Chapter 8: Exceptional Control Flow
Chapter 9: Measuring Program Execution Time
Chapter 10: Virtual Memory
Chapter 11: System-Level I/O
Chapter 12: Network Programming
Chapter 13: Concurrent Programming
27 of 30 people found the following review helpful
HASH(0x9c76d7a4) out of 5 stars Great book in general June 7 2011
By C. Lee - Published on Amazon.com
Format: Kindle Edition
I am a software engineer who already have 5 years experience. When I was at University of Penn., we used this book(1st edition) as supplement. However, I found it is just deserved to be used as main textbook: clean, friendly writing style, concrete examples to explain abstract system concepts, and interesting exercises with detailed solution. It's the number one system textbooks in my mind. Even though I have worked for 5 years, this books remain it's place on my bookshelf.

The only little problem of this book, both the strength and weakness, is that it chooses x86 architecture to explain the system concepts. x86 is great architecture, but from an embedded system developer point of view, I will strongly recommend the authors to introduce some embedded processors topics(like ARM): they are small, powerful enough to drive most of mobile devices, and consumes "much" less power, and more importantly, they are the rising stars in the post PC world.
21 of 24 people found the following review helpful
HASH(0x9d1dfed0) out of 5 stars Nice Book! May 25 2005
By Adam - Published on Amazon.com
Format: Hardcover
I just completed a college course using this textbook... the course was tough, but the book was very good and useful. This is one textbook I won't be selling any time soon!

The practice problems provided in the book were usually very good, and the programming problems distributed with it were fun and educational, including topics like Buffer Overflows, Memory Optimizations, and Debugging with GDB, among others.

There are *some* problems with this book, but it doesn't suffer from the devastating flaws that plague most computer science textbooks. Some sections lack thorough explanations and examples, and the writting is a bit unclear at times. Some solutions to the practice problems are vague and don't really provide much insight on how to solve the problems. Luckily, these flaws only creep up in a few places.

Compared to most technical textbooks, however, this one really shines. It's not quite perfect, so I think 4 stars is appropriate.