I was looking at my old high school's computer science curriculum, and I saw that Java is their language of choice.
Upon further inspection, it looks like The College Board, the company that oversees the Advanced Placement Program (AP) has also standardized on Java, which I'm sure influenced the school's decision.
Before learning that my alma mater offers modern programming classes, I was considering volunteering to teach an adaptation of MIT's 6.00 course as an extra-curricular course. 6.00 uses Python.
This has me thinking about the best language for new programmers. Java is obviously a powerful language with many useful add-ons, and I don't think it's bad for students to have exposure to it, but I wonder if it's the best language to start with.
Are there any teacher hackers out there that can shed some light on this? I'm not a teacher, so this isn't my area of expertise.
Any info on The College Board's reasoning would also be appreciated.
C is easy enough until you hit pointers (and arrays give people trouble, strangely enough). Eventually pointers were just dropped entirely, and the students were told to memorize that scanf is magic.
Then came Java. It was taught as if it were a prettier C. No objects anywhere, just a bunch of static methods. The students were told to memorize a bunch of magic once again (what's a "class"? why do I have to type "static"?).
I did not get a chance to help anyone struggling with Python. I think it is a better teaching language, but you still have to teach a subset. If you show beginners a list comprehension, they will likely swear off programming forever :) The advantage is, the subset you teach can avoid magic.
One problem: Java is a (current) standard. Schools want to teach things they think are useful in the workplace. Interestingly, students want to learn these languages for the same reason. Just google "what programming language should I learn", and read the responses. A large number will base their answer on "what's used in industry".