Rethinking the Java Curriculum: Goodbye, HelloWorld!
Subject:   I thought I said that in the article
Date:   2002-08-23 07:31:28
From:   ljagged
Response to: I thought I said that in the article

I agree with all your points, except for the last one. I think that starting a course with a system check is _exactly_ the way to start a computer course, OO or not. Particularly, if the student has little/no programming experience.

When you're doing a physics experiment, you want to reduce the variables to an absolute minimum. The best situation is to have one variable that you can control. Similarly, if you start the student out with an example of a good OO program and it doesn't work, they need to figure out why. is the JVM not on their PATH? Is the jar file not on their CLASSPATH? Are they treating an instance method as a static method? By starting with HelloWorld you're limiting the number of variables. If HelloWorld is working, then they probably have their PATH and CLASSPATH set up correctly. That's to say, their toolset is in working order and they can go forth with confidence.

Admittedly, I'm a little vague on your goal. When you say a "Java-based introduction to object-oriented programming" is the intention that the students are already familiar with programming and this is their first foray into OO? The impression I got from the top of the article where you mention CS101 and CS in high school for the AP is that these are first time programmers. If that's the case, I'd argue that they should start with a language like python, scheme, or logo.

Python: print "Hello World!"
Scheme: (print '"Hello World!")

even BASIC is just: 10 PRINT "HELLO WORLD!"

and, I agree, that's probably a waste of time. If I had to teach Java to beginners, I'd probably teach them Jython. They get the benefits of a REPL environment and the ability to learn Java's class libraries. Eventually, I'd wean them off of Jython and into writing actual java code.