If you're willing to spend some time comparing ISBNs, then Abe Books is a source that a lot of people don't consider. (It's also significantly cheaper than Amazon, most of the time.)
Good luck, OP. IT classes kept me sane in high school--thanks on behalf of all your students.
I would recommend reading SICP first (it is freely available online). There is no need to wait. You should be able to understand it even as a beginner. Whereas TAOCP (which is fairly pricy) can wait until you have more time and money.
That said, I can only base my opinion on my own experience. I first picked up SICP after I started working professionally. I found the experience eye-opening, and I believe that I am a much stronger developer for having read it. I often wish that I had read it earlier - I might have chosen different course-work or even a different graduate program if I had. However, the book is a bit famous for its bi-modal rating on Amazon - lots of 5-star and 1-star reviews. I believe the majority of the 1-star reviews come from students who were forced to use it in school and are upset that it didn't teach them how to do "useful" things like build websites or write video games. It's possible that if I had read it earlier, I might not have appreciated it.
Hope that helps.
CLRS - Introduction to Algorithms
EDIT: I can't possibly imagine why I was downvoted for suggesting CLRS to a math/CS student who's expressed interest in CS generally, complexity theory specifically, and didn't feel challenged by their complexity course.
Effective Java
Java Generics and Collections
Java Concurrency in Practice
These are my favorite Java books, but they are a little dated with respect to the newer JDKs.
JavaScript: The Good Parts - the only JS book I've read. Pretty good.
Algorithms by Sedgewick
Algorithm Design Manual by Skiena
I could go on and on....
Lots and lots of free stuff at https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md#language-agnostic
Code: The Hidden Language of Computer Hardware and Software is a really good and very readable computer architecture book.
For web development, JavaScript The Definitive guide would be a must. It is huge, though. Took me three weeks to read it.
I also recommend Code Complete by McConnell. It is not language specific, but it covers a lot of business and computer science areas.
Gray Hat Python is good if you're on Windows. The examples are useless without Windows, because it walks you through building a debugger that wraps an executing process. If you are on Windows, Windows Internals or anything by Mark Russinovich is worth the read.
I would also recommend Code by Charles Petzold. It is short, but goes over the history of computing pretty well.
Lastly, I would recommend working through Programming Scala. Even if you don't plan to use Scala, understanding the concepts and the type system will make lots of other things click in other languages.
Hey, I took a discrete math course 2 years ago and we used a book written by one of our lecturers as shown here. I actually found it to be very well structured and 'easy' to follow.
If you wanna check it out, PM me and I might be able to help :)
I highly recommend Practical Object Oriented Design (POODR) by Sandi Metz. You don't need to worry too much about knowing or investing in Ruby, the principles apply to any Object Oriented language, and Ruby's syntax is really easy to understand.
Looks like a good workbook, but fails as an instructional book according to the reviews. Still a good share!
They're the most recent, and both are excellent. I used to have two copies of Manning and Schütze — one for home and one for work.
Winograd's Language As a Cognitive Process was the first NLP book I owned and I still refer to it once in a while.
Perera and Schieber's Prolog and Natural-Language Analysis is good if you're interested in logic programming and NLP. It's dense though.
Search on Amazon for "natural language processing" and you will find a bunch of books from Springer that were released in the last year or two.
Introduction to the Theory of Computation by Michael Sipser: http://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X
Edit: wow, that book is more expensive than I remember. I have the 2nd edition, which can be found for a fraction of the price of the latest new edition. I'm not sure how they compare in content, though.