@raceprouk said in Stanford dumps Java as introductory class:
But this change is mainly there to help students get into the concepts behind programming, instead of drowning them in 'Public Static Void' like jargon.
So, to get students to learn concepts better, you throw half of them away. Gurd jorb.
I was a TA in an introductory programming class with Java for a while (and a while ago). This class was aimed at general engineering students, not CS specifically. For a significant portion of the students, this really was their first proper programming class.
And IME, the boilerplate of Java really gets in the way. The simplest example (i.e., "Hello World") contains more magic incantations than actual code. In an introductory course, you might not even end up covering all of the incantations -- remember, these students may only be familiar with the terms "variable" and "function" from math (where they are something quite different). "Objects" and "classes" and "packages" are meaningless terms to these, so stuff like "public" and "static" are just noise at that point. "String"? Put it there because you need to. "Void"? Same -- we'll get to that later. "System.out.println"? Yeah .. the "println" is the interesting part. "System.out" ... yeah, later.
It's not that the students shouldn't learn the concepts, it's more that they need to learn to crawl (understand WTF a function is, and WTF a variable is, how&why types matter, and how to sequence the things you want to do in a sensible order -- surprisingly often a difficulty for math-heavy students) before you can teach them to stumble forward somewhat upright.
Edit/added: As one student told me, this was the first time she realized she could write commands that the computer would then run. This was apparently fairly mind-blowing at the time.
@Mikael_Svahnberg said in Stanford dumps Java as introductory class:
Could be worse. At my uni they are discussing switching to Python as the first language.
I think it depends on the target audience. For something like math/physics students, I think it would be a fairly solid choice as a first language. It certainly would be more useful than Java, which essentially nobody ever touches again after the first programming course (again IME).
For CS, my former uni's approach of Haskell+Java followed up by ASM+C seemed like a solid foundation for later courses. Not sure I'd recommend replacing any of those with Python, though.
 I think C++ took a significant step in the wrong direction here, with the ">>"/"<<" syntax for input/output.