Books

Programming

Programming – Principles and Practice in C++

A beginners guide to programming, using C++, by the creator of C++. It assumes no prior knowledge and teaches programming from scratch. Initially it hides several details about C++ (like headers) from the reader, before explaining them several chapters later, in order to ease learning.
Good programming style and design is emphasised. All major areas of C++ are covered and even C compatibility. Overall, this is an excellent introduction to C++.
Note: This is based on of the first edition (not the C++11 version).

The C++ Programming Language

The definitive reference for C++ and a recommended book for any C++ programmer.
It covers all the features of the latest version of C++, C++11, and it offers advice on their usage and how not to use them. Examples of usage are shown in its brief tour of C++ chapters (2-5), its demonstration calculator (chapter 11) and its implementation of the standard library string type.
It is partially a reference and partly tutorial, functioning well as both. When using it as a reference the index at the back is the fastest way to find information.
The C++ language is covered in much more detail that the C++ standard library. This is deducible from the title, however it does cover all of the standard library, at least in summary.

Game Engine Architecture

This provides good broad guide to the core systems of a game engine, it ignores game specific items.

The Linux Programming Interface

  • Author: Michael Kerrisk (Linux kernel documentation maintainer)
  • Website: www.man7.org/tlpi
  • Published: 2010

A thorough guide to programming with Linux. It covers all Linux’s system APIs. Graphics is not covered as it is a distinct project from the Linux kernel and not associated.
It also functions as a guide to how Linux works as it explains the workings of it in the process of explaining its APIs.

Mathematics

How to Think Like a Mathematician

This book doesn’t teach new mathematics. It covers how to approach mathematics, solving problems and reading proofs, doing exactly what it says on the cover. After each topic it provides exercises to test understanding of the topic.
It starts with detailing how mathematics should be written, when presenting a finished piece of work. For me the most surprising aspect was that mathematicians should always write in sentences. Thinking logically is a major section of the book, with the finer points of usage of items like implications covered, as well as how to avoid abusing the very common equals sign.

Computer Science

The New Turing Omnibus

  • By A. K. Dewdney
  • Published 1993

Despite its age, much of its content is still relevant (minus the tiny content on DOS). It functions as a broad guide to computer science, introducing a new student to the fascinating range of topics.

Security Engineering

  • By Ross Anderson
  • Published 2008

An excellent, thorough, guidebook to security. It summarises many major topics and provides pointers on where to find more detail. The failure of supposedly “secure” systems is also included and a common feature of many of the book’s chapters.
It is (legally) freely downloadable from http://www.cl.cam.ac.uk/~rja14/book.html – the book’s website.