Comment A few more (Score 1) 160
It's been mentioned, but if you do any C++, you absolutely must have exactly 2 books once once you've understood the basics:
The C++ Programming Language (Stroustrup)
Effective C++ (Meyers)
There are so many garbage books on C++ that rehash the same crap. These 2 are the rare ones that will actually help you progress further in your understanding.
In general, I try to find the one definitive book on a subject. There often is one. In CS, these would include:
Introduction to Algorithms (Cormen et al)
Compilers - Principles, Tools and Techniques (Ahi et al)
Introduction to the Theory of Computation (Sipser)
A good university text each on discrete math, linear algebra, databases, operating systems, and networking is handy too, but there seems not to be a consensus as to which is the best. I guess what I'm saying is "do a CS degree and keep all of your textbooks".
I remember growing up and teaching myself programming in high school, like many people here. If there is one thing I wish I'd had, it's better access to technical books. Good books are worth the money. They're better written, better organized, and have much more quality content than the web. Skip the mainstream book stores and proceed directly to your local university book store, wherein you will find many books you won't find anywhere else, and much less crap. Abandon public libraries as they contain little in the way of serious technical material. University libraries are much better and some will let you join for a minor annual fee (eg $50), even if you don't go to that school.
So much for that. Now, some random personal favorites:
The Selfish Gene (Dawkins)
Darwin's Dangerous Idea (Dennett)
How the Mind Works (Pinker)
The Computational Beauty of Nature (Flake)
Practical Ethics (Singer)
Real Time Collision Detection (Ericson) - this book is much better than most I've seen on the subject
The C++ Programming Language (Stroustrup)
Effective C++ (Meyers)
There are so many garbage books on C++ that rehash the same crap. These 2 are the rare ones that will actually help you progress further in your understanding.
In general, I try to find the one definitive book on a subject. There often is one. In CS, these would include:
Introduction to Algorithms (Cormen et al)
Compilers - Principles, Tools and Techniques (Ahi et al)
Introduction to the Theory of Computation (Sipser)
A good university text each on discrete math, linear algebra, databases, operating systems, and networking is handy too, but there seems not to be a consensus as to which is the best. I guess what I'm saying is "do a CS degree and keep all of your textbooks".
I remember growing up and teaching myself programming in high school, like many people here. If there is one thing I wish I'd had, it's better access to technical books. Good books are worth the money. They're better written, better organized, and have much more quality content than the web. Skip the mainstream book stores and proceed directly to your local university book store, wherein you will find many books you won't find anywhere else, and much less crap. Abandon public libraries as they contain little in the way of serious technical material. University libraries are much better and some will let you join for a minor annual fee (eg $50), even if you don't go to that school.
So much for that. Now, some random personal favorites:
The Selfish Gene (Dawkins)
Darwin's Dangerous Idea (Dennett)
How the Mind Works (Pinker)
The Computational Beauty of Nature (Flake)
Practical Ethics (Singer)
Real Time Collision Detection (Ericson) - this book is much better than most I've seen on the subject