This book helped me cross over from an application programmer mindset to a systems programmer mindset. When writing any kind of application a developer needs to understand both perspectives of programmigng and when you truely gain an insight into system level programming the reasons why so many things that happen at higher levels of the programming abstraction suddenly become crystal clear. When you understand exactly how a CPU executes instructions it will allow you to write faster more efficent code, the trademarks of a true craftsman.
Computer Architecture is an absolute must read for anyone who wants to understand Operating Systems and how they control the hardware and software interfaces of the computer. If you plan on doing any kernel development or just want to be a better systems programmer; this book is absolutely gold!
This book is a must read for any serious linux or windows developer who wants to understand the most advanced topics in the programming toolchain; compiling and linking object modules together and how ones code is laid out in memory when a process starts up. This book deeply covers static and dynamic libray linking and loading of dynamic libraries into a proccesses virtual address space during process loading and execution.
This book is a must read for any level C++ developer. This book really does a great in depth job at getting a C++99 developer up to speed on C++ 11 and the STL.
If you want to do professional development using C++ you will absolutely need to know and understand the Standard Template Library.
Scott Myers; one of the masters of C++ goes over the top 50 things every Professional C++ developer should know.
Compiler Design is one of the most in-depth topics of Computer Science, even if you don't plan on being a compiler writer, understanding how they are written and what they do is vital to being a better programmer.
This book is a must read for any developer that programs in a managed language that targets the Common Intermediate Language Runtime. Gives a good look at how the CLR functions, providing special attention to Garbage Collection.
The mastering of Algorithms separates the apprentices from the masters. I revisit this book daily to gain new insights to problem solving.
Data Structures are one of the core concepts of Computer Science, learn these inside and out to make sure your program executes in the best time and space possible.
This book is a must read for any programmer on any platform. Learning design patterns is learning a common language of existing methods that solve domain problems that you can use in both solving the problem and making communicating to other programmers what your code is solving without the need to explain the actual implementation of the code itself.
SICP, a classic in computer science. This book teaches the core computer science programming concepts from a math heavy perspective using LISP as the programming language which is a functional programming language.
Digital Image processing is one of those books that walks the fine line between theory and implementation. If you want to do any kind of digital image processing this book is a must read, two or three times! Though the book uses JAVA to teach, the core mathematical concepts are universal and can be taken into any programming environment.
Ever wonder how a game is made? Want to make your own Game Engine? This is the book for you! When creating a game engine it is something you will want to plan out and this book will definitely be a holy grail of resources to refer back to as you implement various parts of your game engine.
Linux Kernel Development is another book any computer science student, or any IT professional who deals with Operating Systems should read. This book provides a good high level over view of the Linux kernel and all sub systems that go into making a kernel. Though this book is aimed directly at Linux, the core concepts are universal among today’s operating systems.
Operating System Concepts is a book that pairs very well with the Computer Architecture book. This book will go over in great detail the operating system and all of its modules and how it controls the actual hardware of the computer. Another must for computer science students.
This is my bible for the Rendering Pipeline. This book will sit right next to the book for Game Engine architecture. If you plan to write or interface with an existing rendering system you will need this book by your side. A true holy grail of reference material without getting lost in the theory of graphics rendering.
Those gorgeous triple AAA titles and their almost near photorealism, the black magic of the math that makes them possible are detailed right here in this book. Learn real world implementation details directly from the coders who developed them and be amazed and humbled!
If you want a high level understanding of the circuits that make up the hardware of a CPU in which our world of software becomes possible, this is the book for you. Even if you never plan to work on the electrical engineering side of computers it is still vital to understand how they are constructed and function as a programmer.
From analog circuits, Boolean logic and arithmetic, sequential logic chips, machine language, computer architecture, assemblers, virtual machines, high level languages, compilers, to operating systems this is the book for you. Gives an amazing high level view of a complete computing system which has been lost over time in teaching Computer Science. This would be a great book to give to a student in high school if they plan on taking computer science in college.
This book has a great breadth of information for 3D mathematics. If you are completely new to game development I would highly recommend this book be one of the first you start with.
Calculus, the study of the rate of change is the corner stone of mathematics and learning the subject at a deep level will deepen your understanding of the world around you.
Discrete mathematics are the buidling blocks of computer science. In Discrete math you will learn numerous subjects from computational theory, counting permuatations and combinations, graphs and trees, as well as numerous ways to perform proofs.
Linear Algebra is the study of lines in R^n dimensions. In R1 we have points, R2 lines, and R3 planes; in which linear algebra allows us to transform data within those dimensions using matricies. When you first start learning linear algebra it seems like a big mess of numbers at first, but once you gain the visual insight into matricies and transforming data you then can see the matrix in your mind and have a deep grasp on what is actually happening.
This tiny book is a must have for anyone dealing with mathematics, who wish to learn Calculus or just wish to have a good refernece book on the budiding blocks of calculus.
The study of triangles, again another subject that is a cornerstone of mathematics. Isn't everything in math really a corner stone of mathematics at this point? I digress, if you wish to get into any engering role across numerous science disciplines you will need to have a solid grasp of triangles, how they realte to the unit circle, and how you can apply these simple concepts to numerous disciplines.