Seriously … My daughter is taking a computer class, and for reasons I cannot fathom, they are using an AP Java book (an old one at that, written when Java 5 was new), and more importantly and more concerningly, the Java language itself.
I’ve got many qualms about using Java for teaching (or development, but thats for other posts). For new students, early exposure to its rigid and verbose … one might argue … excessively verbose … syntax and structure, don’t quite lend themselves to an understanding of how algorithms and computers work. When you are lost in the minutae of class construction and debugging, you often can completely lose your way from the path to solution. Relatively minor changes in data structures require often significant/major rewrites of various objects.
Why on earth would anyone want to be subjected to that?
Though I occasionally grimace at using Python, it has much goodness, and little of the cruft of Java. Perl (with Moose and other element), Node, Ruby, and a few others would all be far superior in getting students to the thinking stage faster than the twisting turning maze one finds themselves in with Java.
To their credit, they are using the bluej system. This is something like an ide, though, as with all Java, the sheer amount of boilerplate code you have to write to get anything done is simply ludicrous. Press the button for a class creation and it spits out this:
and then type in the name of the class, press create and you get this
The first time she looked at that, I could see her eyes rapidly glazing over. This is not what you want to present to a 9th grader, as their first environment for programming. Not even close.
You want expression of algorithms to align closely with syntax, and to enable very rapid coding, testing, debugging, without so much ridiculous cruft.
I’ll gently suggest Python, Perl, or other better languages for this at some point. They gain nothing by subjecting students to this at this stage in their academic lives.