Huh. It's about the science, not the language, but you really should use VB6 or C/C++ rather than C#? Really? VB6?
First, you contradict yourself, then recommend probably THE worst language for learning about computer science/data structures/algorithms (not that VB isn't good for other things, mind you). C and C++ are fine, but not better than C# for data structures.
Then you recommend Java, which is nearly identical to C#. Next up, Python and Ruby, both great languages, but not all that appropos for data structures in comparison to the others mentioned (except VB6). Great for algorithms, though.
IOW, you're all over the place with no logic applied to your recommendations. C# would be a fine language for learning data structures/algorithms as a CS student. I think Pascal is still the most suited language for this, but C# and Java are close seconds.
C++ would come in after, as it's a more complex language and you'd spend too much time on language considerations instead of focusing on the subject of data structures and algorithms. The rest probably aren't good recommendations for this, and VB6 is certainly
I am going by what the current curriculum is at some of the leading universities in the UK, so there is an element of experience in my statement.
I would like to draw attention to the fact that I have been at no one time been explicit about choosing language
x over language y, I have merely presented an array of languages that omit C#.
It is difficult to say why I think C# not appropriate, but I think it is because it is simply too good. It has LinkedLists baked into it for example, and the standard sequence operators (more of the what you want done, not how) like SkipWhile and
Take etc. conceal a lot of things a CS student should be able to do given a for loop and some primitives. That's not to say you cannot in C#, but it is like going on a diet in a sweet shop, it's just too tempting to use what is there.
I also think it narrow minded to pigeon-hole VB6 as being useless, as I know some very complex systems, dealing with embedded systems that have been written using the langauge with data at the forefront, and a CS student should be aware of as many languages
(IMHO) as possible, warts and all.