Last spring I completed my first year of study in Computer Science, at a relatively large American university. I took two courses in CS: Intro To Programming, and Data Structures. Both of these classes taught exclusively C++.
Besides a little Python (that I've completely forgotten), that is my background in programming.
Initially, I was satisfied with the courses I took. I'm taking a year off to travel (currently, I'm living in Japan), and I've been doing a bit of thinking. I've begun to realize, that while my professors preached that they were trying to teach me the underlying algorithms and not the language, I really only was taught how to do stuff in C/C++. I recently have been playing with SBCL, and I realized that I had no idea what I'm doing. I feel like most of the concepts they taught me depend completely on the way C++ works.
I've decided to correct this. I won't be back at the university for another 10 months, and during that time I want to learn a new language.
I've seen discussions about Scheme, Clojure, CL, C, C++, Java, Haskell, Erlang and so many more.
In your opinions, what should I learn, and how should I learn it? I don't really care about usefulness in the workplace, I just want to see what I know, and I want to learn more.
Anyway, I'm just feeling a little discouraged. I hate feeling like I'm wasting my time at a university to a tune of $20,000 a year. I'm sure I've learned valuable stuff, but it all feels very one-sided.
I really appreciate any advice. I've been really impressed with the entire community here, and I dislike feeling as though I have nothing to offer back.