software
Backing up all the specific language manuals etc. should be a deeper and more general foundation, such as these.
Guide to the Software Engineering Body of Knowledge – IEEE Computer Society- What are the things to know in software engineering? This gives a summarising enumeration of all the areas and subjects.
The Unified Software Development Process – Jacobson- The benchmark for software development processes. One need not follow it, but one cannot but gain a good grounding from this refined structuring of high-level development knowledge.
Extreme Programming Explained – Beck- Gives a rationale for agile development, and a coherent process and set of practices for doing it. And not in conflict with the Unified Process.
Rapid Development – McConnell- A collection of practical guides for running software projects, without specifying a process.
Object Oriented Software Construction – Meyer- Should be the cornerstone of OO software education. The closest thing to a theoretical foundation, and much practical guidance too.
Object Oriented Design Heuristics – Riel- Describes a set of good properties for OO software structure. Not as well known as Refactoring, but could be a basis for it.
Design Patterns – Gamma, Helm, Johnson, Vlissides- Adds a higher level expression of design to OO, by explaining its meaning and describing many examples.
Refactoring – Fowler- Formalises software maintenance by defining its sub-process and describing a set of low-level activities.
UML Distilled – Fowler- Perhaps UML has diminished in importance, but this book is still a neat, short exposition of the essentials.
Programming Pearls – Bentley- Through the clever consideration of a set of small problems, it brings you closer to the heart of programming. In today's world of 'enterprise development frameworks', it seems almost like a lost art.
Code Complete – McConnell- Everything you need to know about actually writing the code.
maths
To do graphics, some particular maths is needed. All with a practical, numerical leaning.
Engineering Mathematics – Croft, Davison, Hargreaves- Straightforward comprehensive introduction or refresher on basic practical maths. Preferable to others because it covers some useful extra material like vector calculus and discrete signals.
Mathematical Techniques – Jordan, Smith- Alternative to 'Engineering Mathematics', covering a very similar range of material. And having a second view is probably a good thing.
Numerical Recipes In C – Press, Teukolsky, Vetterling, Flannery- A good broad education on numerical maths, partly because everything is backed by code. Any particular algorithm is not always the best however.
Linear Algebra Through Geometry – Banchoff, Wermer- Linear algebra is the core maths for graphics, so a basic to moderate guide like this is needed. All the useful stuff is made clear.
Computational Geometry In C – O'Rourke- Not so central to graphics, but a well-written exposition of an interesting field. Algorithmically oriented with plenty of code.
Ripples In Mathematics – Jensen- Fourier transform? —that's old, awkward stuff: Wavelets are the real tool. This is the best practical information on them, while engineering maths books don't yet include them.
Wavelets For Computer Graphics – Stollnitz, DeRose, Salesin- More wavelets, for a particular domain application. Not entirely as clear as possible though.
graphics
For writing high-end renderers, mainly.
Principles Of Digital Image Synthesis – Glassner- Broad theoretical education on graphics. Builds the subject from three parts: perception, physics, and signal processing. There is much to learn from this magnum opus.
Physically Based Rendering – Pharr, Humphreys- Righteously focussed on real code for a whole renderer.
Realistic Image Synthesis Using Photon Mapping – Jensen- Concise practical and theoretical exposition of the foremost global illumination simulation technique. Begins with a quick, more general introduction.
Computer Graphics, Principles And Practice – Foley, Van Dam, Feiner, Hughes- The relevant parts contain some of the best, most solid explanations of the subject. But about half the book is out-dated or irrelevant.
Siggraph Conference Proceedings – ACM Siggraph- Most interesting new articles are published here.
Jim Blinns Corner: A Trip Down The Graphics Pipeline – Blinn- A collection of practitioner's techniques, observations and diversions.
Jim Blinns Corner: Dirty Pixels – Blinn- A collection of practitioner's techniques, observations and diversions.
nature
Living things are natural digital systems. But how do they work?
The Triumph Of The Embryo – Wolpert- Short semi-technical introduction to developmental biology. Better than more advanced texts because its purview is the better understood abstractions, without the undigested mass of details of current research.
Principles Of Development – Wolpert- More extensive detailed coverage. But it consequently becomes more obscure.
Genomes – Brown- Undergrad level genetics. Suitable for the software geek wanting lots of info at the 'machine-code' level.
On Growth And Form – Thompson- A detailed consideration of the physical substrate and its rich contribution to the development of living things.
The Self Made Tapestry – Ball- An introductory visual and textual survey of structures formed by natural physical processes.
thinking
Serious Creativity – De Bono- A collection of De Bono's techniques for deliberate productive thinking.
How To Solve It – Polya- Some ways to think-through problems.
credit to: hacking Amazon images
