I had originally gotten this book in class about 10 years ago. It is BY FAR THE BEST programming book I've ever seen.
It was written by a university instructor and his staff with the feedback of students. This is THE BEST book for anyone learning how to program FROM SCRATCH! EVERYTHING IS THERE - just read the book cover-to-cover and make sure you understand the chapter before you move on. You can use google if you need to, (and if you're new to programming you'll probably have to), but everything is there to get through the book AND understand what's going on.
I can't tell you how much money I spent on useless books in school that already presume that you've been programming for years.
This book is absolutely AMAZING. You're not going to learn how to be l33t haxzor in 3 weeks, but EVERYTHING is there to give you a SOLID foundation in programming concepts. This book was so good, I bought the companion book on Data Structures in C++ AND I got the Java and Java Data Structures books!