List of freely available programming books
stackoverflow.com
stackoverflow.com
What a surprise....not.
There seems to be a pedantic core of people on SO that go around locking topics, rather than contributing in their own area of expertise.
(a) it's preserved because it has 'historical significance', yet
(b) the bits are rotting as new books are released and old books' information becomes out of date
Read That Book.
If you've only done imperative programming before then it should be pretty eye-opening. If you've done functional programming before then it's not quite as O_O inducing, but still worth a read.
Also, it's effectively free so you can easily have a look yourself ^_^
However, it focuses very much on the principles of programming from a high-level, and has challenging exercises that keep you engaged. It's a programming book written from a Computer Science perspective. It uses Scheme, a dialect of Lisp, which frustrates some. However, I think Scheme works best for the book, and replacing Scheme with something "useful" like Python would be the equivalent of taking a linguistics course that uses Latin as a generic vehicle to explain various grammatical constructs, and suddenly replacing Latin with Latin American Spanish - sure, Latin isn't "practical", but that's not the point.
I did not read it knowing "nothing", as some people suggest you should. I already knew how to get around in C++ and Python, and then read it on my own.
You don't really get Concrete Skill X from reading the book (and working through the exercises). It's a high-level work. What I got from it was a high-level perspective on languages, algorithms and abstraction techniques. I learned to see imperative, OO, functional and other programming paradigms as tools in a toolbox that have advantages and disadvantages, not as the One True Way to program. I also learned to, in general, think about the literal and not-so-literal implications of my code. The latter half of the book is more about language implementation, and culminates in implementing Scheme, among other things.
MIT phased out the book in its introductory course because, "Understanding the principles is not essential for an introduction to the subject matter anymore." Take from that what you will.
And for someone new to programming, it's worth reading Paul Graham's explanation of the value of Lisp [1] if you haven't already.
http://sicpebook.files.wordpress.com/2012/11/sicp-marginless...
On a serious note, this is actually a good resource, and probably an example of a question that wouldn't be allowed on Stackoverflow today but is kept around due to it being so darn popular.