by Jon Kleinberg & Éva Tardos
Its a good introduction, but it will require you to be decent at math and know how to do proofs.
On the other hand, if you are interested in how programs can express things, then maybe you want to learn about some CS theory. Specifically, some lambda calculus would be good to learn, but I don't have any good suggestions.
Note: All of these will be easier to read if you are pretty good at programming, so I'd say follow at least the first piece of advise above.
It is a really enjoyable read and has a nice narrative that I think other algorithm books are lacking. CLR, for instance, just reads like a handbook to me. The goal Kleinberg/Tardos book, OTOH, is to teach you how to design and analyze algorithms. They will actually follow false starts on certain problems and uncover where they break.
Kleinberg is the rebel king!
Good advanced text: Jon Kleinberg/Eva Tardos: Algorithm Design
But if you really want to learn more about algorithms, check out this book:
As for programming languages, the java + eclipse combination is excellent.
Fresh book recommendations delivered straight to your inbox every Thursday.