Writing Efficient C Code: A Thorough Introduction was written for two groups of readers: • programmers who want to learn C from the beginning, and • practicing C programmers who want to sharpen their skills. Our goal with the book is to give the reader a deep understanding of both the ISO C programming language and a method based on performance measurements to write efficient C code. We present essentially all of C99 and the new revision of the ISO C standard, called C11. In addition to C, we introduce elementary computer architecture and essential C development tools including the gcc compiler, the gdb debugger, profilers, and the Valgrind suite of tools for performance analysis and automatic detection of software defects. Using performance measurements and a deep knowledge about which code transformations optimizing compilers can perform automatically, as well as their limitations, as the basis for the method for writing efficient C code, the readers of this book will hopefully become more productive and more competent in writing correct, maintainable and fast C code. In order to achieve this goal, and to help C programmers visualize the machine code and the clock cycle counts of their code, the book contains one chapter on the internals of modern optimizing compilers, and the necessary background on how C is translated to machine code for a RISC processor. At the book's site www.writing-efficient-c-code.com, the authors answer questions related to the book. It also has a growing list of zip-files useful for solving and checking exercises in the book.