I have been programming in C# for about 4 years at work. I plan to go back to grad school for a masters in CS next year, what language should I learn to help me out with grad school courses?<p>Update: To be clear, the purpose of going to grad school is to sharpen up and most likely to go back into the workforce later.
Grad school is writing and reading papers, not writing code (most of the time). Learn LaTeX and subscribe to ACM digital library and get to reading. You're expected to have programming skills in advance (at least where I went) but you should be language indifferent. Read SICP and learn the basics of C, C++, Java and Python.
Clojure:<p>- Functional programming is sufficiently different from C# to expand your mind in a good way. New paradigms will make you a better programmer even if you stick with C# in the end.<p>- Open source foundations allow you to get all the tools you need for free.<p>- Java interoperability gives you access to libraries you'll need for specialized projects.<p>- Clojure is growing and has an excellent community on Google Groups and on Freenode IRC.<p><a href="http://clojure.org/" rel="nofollow">http://clojure.org/</a>
You shouldn't be thinking languages, you should be thinking concepts. Take a look at your course schedule, find books and papers on those topics and get cracking.
Your software development skills will probably be superior, or at least way more than is needed for a grad program. If all you know is how to write code, you'll have a tough time expressing the concepts you are learning in the classroom.
If you have 4 years of experience in C#, stick with C#!
It will be tough, but most of the people in academic environment don't have professional experience as developers... so you should be ahead of them with your C#.