People sometimes ask me for suggestions on what to read in a particular field. So here are some.
On Piano Playing: Motion, Sound, and Expression. Gyorgy Sandor. A very good introduction to proper piano technique. Focuses on a natural ergonomic touch to reduce strain. I had been playing the piano for more than ten years when I read this book but it still taught me a lot.
The C Programming Language. Brian W. Kernighan, Dennis M. Ritchie. A tutorial and reference book in one. The book on C, even if it's only about 250 pages thick.
The C++ Programming Language. Bjarne Stroustrup. Goes through almost all aspects of C++, somewhat like The C Programming Language; however in 900 pages (which probably says more about the level of complexity management C++ offers than about the author). Unfortunately, Stroustrup isn't nearly as gifted a writer as K&R, and the book sometimes gets quite dry. But still it is the definite complete tutorial for C++. Not a beginners book, though.
The Design and Evolution of C++. Bjarne Stroustrup. A behind-the-scenes book with explanations and discussions of why C++ is the way it is. A fascinating read - for one thing, it shows how much careful thought and experimentation has gone into the shaping of C++.
Accelerated C++: Practical programming by example. Andrew Koenig, Barbara Moo. Is on the other hand a beginners book. I haven't read it myself, but people I know seem to like it; it is also recommended by Stroustrup himself.
Ruminations on C++. Andrew Koenig, Barbara Moo. An interesting book that shows how to implement various minor examples, dwelling on the design and implementation considerations. Special attention is paid to pointers and memory management issues.
Effective C++: 50 Specific Ways to Improve Your Programs and Design. Scott Meyers. A book that teaches style and tells you what to do and (most often) not to do. Among the examples are many important C++ idioms - very recommended reading for C++ programmers.
More Effective C++: 30 New Ways to Improve Your Programs and Design. Scott Meyers. More of the same.
Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library. Scott Meyers. Same sort of book, though this time focused on using the template library in C++ properly. Important STL idioms.
Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions. Herb Sutter. Same sort of book as the above three. The most important theme is how to write exception safe code. Which is shown actually to be quite tricky. Very interesting. The material in the book comes from Guru of the Week discussions among the experts in comp.lang.c++.moderated.
More Exceptional C++. Herb Sutter. More of the same.
Modern C++ Design: Generic Programming og Design Patterns Applied. Andrei Alexandrescu. Focuses on template meta-programming, and actually shows how to implement selected design patterns generically (albeit somewhat messy) with templates alone.
Design Patterns. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. The subtitle is Elements of Reusable Object-Oriented Software. This book, a classic (just like K&R) often known as The Gang of Four book, is a catalogue of general applicable patterns in object-oriented design, plus a short introduction and example section. Each pattern is explained in detail with examples (in C++ and Smalltalk). An eye-opener. Highly recommended; definitely not a beginners book, though - the high degree of formalism may seem odd to someone who hasn't experienced the pain of designing even medium sized OO projects.
Machine Learning. Tom M. Mitchell. A beginners book. Covers a lot of aspects of AI, and has a very readable chapter on neural networks which is recommendable as an introduction.
Neural Networks for Pattern Recognition. Christopher M. Bishop. Most books about neural networks are silent when it comes to less obvious details of what training feedforward networks actually does, and what the result of the network represents. This book analyzes all these details by means of statistics, and consequently gives a very solid foundation for understanding neural networks. The definitive book for feedforward neural networks - extremely good! The math-heavy treatise makes it unsuitable for a beginners book, though.
Back to home.