This book (CS:APP) is for computer scientists, computer engineers, and others
who want to be able to write better programs by learning what is going on “under
the hood” of a computer system.
Our aim is to explain the enduring concepts underlying all computer systems,
and to show you the concrete ways that these ideas affect the correctness, performance,
and utility of your application programs. Other systems books are written
from a builder’s perspective, describing how to implement the hardware or the systems
software, including the operating system, compiler, and network interface.
This book is written from a programmer’s perspective, describing how application
programmers can use their knowledge of a system to write better programs. Of
course, learning what a system is supposed to do provides a good first step in learning
how to build one, and so this book also serves as a valuable introduction to
those who go on to implement systems hardware and software.
If you study and learn the concepts in this book, you will be on your way to
becoming the rare “power programmer” who knows how things work and how
to fix them when they break. Our aim is to present the fundamental concepts in
ways that you will find useful right away.You will also be prepared to delve deeper,
studying such topics as compilers, computer architecture, operating systems, embedded
systems, and networking.
For Computer Systems, Computer Organization and Architecture courses in CS, EE, and ECE departments.
Few students studying computer science or computer engineering will ever have the opportunity to build a computer system. On the other hand, most students will be required to use and program computers on a near daily basis. Computer Systems: A Programmer’s Perspective introduces the important and enduring concepts that underlie computer systems by showing how these ideas affect the correctness, performance, and utility of application programs. The text's hands-on approach (including a comprehensive set of labs) helps students understand the “under-the-hood” operation of a modern computer system and prepares them for future courses in systems topics such as compilers, computer architecture, operating systems, and networking.
Visit the CSS:AP web page http://csapp.cs.cmu.edu for more information and resources.