Rebecca answers a two-part burning question from one of here readers, Marius. A quick taste of the full post, rearranged a bit spatially:
What 'computer science' knowledge do you think is most important?
By far the most important knowledge is that of algorithm development. You're going to be using a computer as a tool to find out whatever it is you actually want to find out. So, knowing how to use it well is what's going to take you the farthest.
When I say "algorithm development," what I mean is understanding how to convert the math into something a computer can do, and going about it in an intelligent, systematic, and efficient manner.
Knowing a range of languages, knowing the internal details of the machines, strategies of how to structure your code, anything else?
I think it is important to know one programming language well...
As for what programming language, I'm not interested in starting a programming language war, but if you're wanting to do the sorts of things I'm envisioning that you want to do, you'll want to be fluent in some sort of mainstream programming language such as C++, C, or FORTRAN. Personally, the vast majority of the work I do is in C++ these days, and I'd recommend it because C and FORTRAN are more limited in terms of what you can do with them. To me, it's really nice to be able to write using just about any type of programming paradigm: procedural, object-oriented; you name it, you can do it with C++. Of course, C++ also enables you to shoot yourself in the foot that much easier. I would suggest Java, which is a little safer than C++, but programs in Java run slower than programs in C++, and more importantly, Java doesn't have all the stuff that you will need for your codes, such as parallel extensions.
Some good discussion starting up in the comments as well. Interesting stuff, well worth reading.