As this question is closed, let me do an attempt that actually meets all 6 requirements.
At our faculty, there's for the moment a big change in the classes "informatics". We used to teach Java, but this is going to be replaced with Matlab (and the class will be called "Scientific Computing"). Personally, I'm not in favor of that idea, because :
- Matlab is not freeware, hampering the possibilities for the students to get hands-on experience. They can on campus or via VPN, but not on their own computers.
Matlab isn't even a real programming language, but a mathematical environment that excells in that but fails in anything else. Matlab isn't suited for general concepts of programming.
edit: these last two points seemed a bit strongly formulated. Matlab has progressed quite a bit since I last encountered it.
Now I also had a problem with Java, as that turned out to be a real pain in the proverbial behind for many students, mainly because of the verbosity.
As it's for a general course in programming, I think these points are important :
- all basic concepts of programming
- rather easy syntax without too much verbosity
- the possibility to easily program both procedurally and object oriented
- a short feedback loop on your programming
- a proven usefulness in many applications, especially in the scientific world (bioPerl, bioConductor, bioPython, bioJava, ...) so they can be used for practical work during their studies.
What's your idea about the best teaching language on a serious level (hence not the pseudo languages used in primary or secondary school, I'm talking bachelor level at university/college)?
edited to keep the question more general.
Originally I mentioned R, Python or Perl, and :
R is maybe less of a good choice as that one is a vectorized language. This is far from general, so it might be too specific. edit: I consider it a blessing, but the argument here was that a vectorized language is not general enough for teaching purposes as people would get into trouble when moving to Perl and Python. I'm also not talking statistics education, we're talking students of level 1st bachelor. Any direction, any kind. I just added the personal experience.