About the books I' have no idea becasue I learn with books in spanish. Alghtouh there were some in inglish very good and simples. Like "thinking in c++" (I don't remember the autor). This is for language (and simple).
Then you have all the way arond about "structurs and algorithms" that in english you have pretty and all good. That contemplates "multistructur", performance, sort alghoriths, short paht find.. etc.
Then you have the desigin sotware book that over the language but they are parading depenent, if you use OOP, take a look at Craig larman, Then Gamma. And ask people who know more, listen to they, they are "wisemen" to us.
About how I start programmin, I start in my school with Pascal (beautifull language and very powerfull), nexto to Modula 2, then to pure C then to C++ then Java, then assembler 8086 , assembler sparc , then wen to functional programming with haskell (what a interesting travel, I loved break heads paradigms). And later a litle from access, basic. I am realy lak in web langauges

. But I hope learning in few month a lot.
I choose Computer science for deafult and finished to loved them.
we, when do softare we have the power to create something from parts, and something usefull for you or others, it is somthing simple but amazing.
I hope it helps you.