EmbeddedRelated.com
Books
The 2026 Embedded Online Conference

Computer Systems: A Programmer's Perspective

Bryant, Randal, O'Hallaron, David 2015

&>standalone product; MasteringEngineering® does not come packaged with this content. If you would like to purchase both the physical text and MasteringEngineering search for 0134123832 / 9780134123837    Computer Systems: A Programmer's Perspective plus MasteringEngineering with Pearson eText — Access Card Package, 3/e

 

Package consists of:

  • 013409266X/9780134092669 Computer Systems: A Programmer's Perspective, 3/e
  • 0134071921/9780134071923 MasteringEngineering with Pearson eText -- Standalone Access Card -- for Computer Systems: A Programmer's Perspective, 3/e

MasteringEngineering should only be purchased when required by an instructor.

 

For courses in Computer Science and Programming

 

Computer systems: A Programmer’s Perspective explains the underlying elements common among all computer systems and how they affect general application performance. Written from the programmer’s perspective, this book strives to teach readers how understanding basic elements of computer systems and executing real practice can lead them to create better programs.

 

Spanning across computer science themes such as hardware architecture, the operating system, and systems software, the Third Edition serves as a comprehensive introduction to programming. This book strives to create programmers who understand all elements of computer systems and will be able to engage in any application of the field--from fixing faulty software, to writing more capable programs, to avoiding common flaws. It lays the groundwork for readers to delve into more intensive topics such as computer architecture, embedded systems, and cybersecurity.

 

This book focuses on systems that execute an x86-64 machine code, and recommends that programmers have access to a Linux system for this course. Programmers should have basic familiarity with C or C++.

 

Also available with MasteringEngineering

MasteringEngineering is an online homework, tutorial, and assessment system, designed to improve results through personalized learning. This innovative online program emulates the instructor’s office hour environment, engaging and guiding students through engineering concepts with self-paced individualized coaching  With a wide range of activities available, students can actively learn, understand, and retain even the most difficult concepts.


Students, if interested in purchasing this title with MasteringEngineering, ask your instructor for the correct package ISBN and Course ID. Instructors, contact your Pearson representative for more information.



Why Read This Book

You will learn how high-level C programs actually behave on real hardware and how to reason about performance, memory, and correctness at the machine level. The book gives practical, tool-driven techniques (debuggers, profilers, binary inspection) and a systems-oriented perspective that makes you a stronger firmware, systems, or embedded software engineer.

Who Will Benefit

Intermediate software and firmware engineers, systems programmers, and senior students who want to understand how C programs map to processors, memory systems, and OS services to build faster, more reliable embedded and systems software.

Level: Intermediate — Prerequisites: Working knowledge of C and pointers, basic data structures, and comfort with the command line and simple programs — no formal computer-architecture background required.

Get This Book

Key Takeaways

  • Explain how C data and control structures are represented and executed at the machine level.
  • Read and write x86-64 assembly and relate compiled code back to high‑level C.
  • Use tools (GDB, objdump, Valgrind, profilers) to debug, inspect, and analyze binaries.
  • Apply performance-analysis techniques to optimize code with an understanding of the processor and memory hierarchy.
  • Describe linking, loading, virtual memory, and how OS services affect program behavior.
  • Design and reason about concurrent programs using synchronization primitives and understand common concurrency bugs.

Topics Covered

  1. A Tour of Computer Systems and Tools
  2. Representation of Information in Computers
  3. Machine-Level Representation of Programs
  4. Processor Architecture and Instruction-Level Parallelism
  5. Optimizing Program Performance
  6. The Memory Hierarchy: Caches and Locality
  7. Linking
  8. Exceptional Control Flow: Processes, Signals, and System Calls
  9. Virtual Memory
  10. System-Level I/O and OS Interface
  11. Network Programming and the Web (rich I/O examples)
  12. Concurrent Programming and Synchronization
  13. Tools and Techniques: Debuggers, Profilers, and Binary Inspection

Languages, Platforms & Tools

Cx86-64 assemblyx86-64 Linux / Unix-like systemsGCCGDBValgrindobjdumpreadelfmakeprofiler tools (gprof/perf)

How It Compares

Compared with Patterson & Hennessy's Computer Organization titles, CS:APP approaches from a programmer's viewpoint—focusing more on how software maps to hardware and how to use tools to analyze and optimize real programs.

Related Books

The 2026 Embedded Online Conference