This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I'm currently locked in a "discussion" with a co-tutor as we prepare for teaching a new course from September. I'm theoretically the lead tutor for this bit of the course, but he has more experience and credibility among the staff.
The course is one unit of a BTEC National Diploma in Information Technology (unit 4 - introduction to software development, full details on pages 59-66 of this 1MB PDF) I'm suggesting Java, my colleague is suggesting QBasic (!)
I'm looking for ammunition to support my recommendation of Java. All suggestions welcome!
It seems that the only professional development with BASIC these days is small programs for the microsoft platform. Java development is for small and large development on all platforms. It would seem that if one were to learn just one language, Java would be a much better choice than BASIC.
I think C would be a better pick than BASIC. I also think the PERL would be a better choice than BASIC.
Along the lines of what Paul has already said - the market is looking for a lot more Java developers than Basic developers. Any experience your students have with Java is going to relate more directly to the workplace than experience with Basic. Certainly, the concepts should be the same, regardless of language, but knowing the ins and outs of a widely used language is going to benefit the students.
Unfortunately, I know little about Basic. In my time in "the real world," I've been pushed to learn Java, not Basic. Honestly, I knew little of either when I came out of school (I learned a lot of C++ in college) - it's been the businessplace that has driven my education since and I can safely say that I've been more solidly driven toward Java than anything else.
Originally posted by Lasse Koskela: I can't figure out why would anyone suggest a BASIC language for a course today. It's the 21st century, for god's sake. Is your "opponent" in this argument at all familiar with Java?
Some people would say the same thing about C. I'm not saying anyone should use Basic to teach an intro to software development class but just because it's the 21st century does not mean we need to forget where it all came from.
Some languages, while not used for new projects, are still very good for teaching the basics of development.
As far as Frank's question/problem goes, I can't think of much beyond what has already been said. In terms of what this "deploma" (strange that it is not a degree) is about, I would think teaching the students a skill that employees are looking for when they complete the program would be more important.
It would be interesting to hear your co-tutors defense for QBasic if you could post it. Sometimes it's easier to argue something when you can see the other side's POV.
OK, to answer a few of the puzzled expressions above.
It's a "National Diploma", a qualification that's considered less than a degree. Typically offered to 17-19-year-old students as a two year course. Aimed at people who either didn't score well enough or don't like the academic approach, and don't want to take traditional pre-university subjects at this level. It's theoretically "vocational", but not tied to any particular career path. Students who complete a course like this don't usually go into "the computer business", but may end up in a job that has some aspect of computer use.
My "opponent"'s arguments run along the lines that Java is Object Oriented rather than procedural, and this might confuse the presentation of basic programming concepts. He also reckons QBasic will be an easier transition to Visual Basic later in the course. It seems he was also under the impression that Java does not have typed variables, which worries me that he may have other misapprehensions.
One major worry held by the overall course leader is that we need to make sure that even the less able and less motivated students (typically the ones who are mainly there because their parents will kick them out of the house to get a job if they are not at college) gain at least a minimum pass. With this in mind there is a lot of speculative discussion about what might be easier for such students to grasp. As you can imagine, all the participants have differing, entrenched, and largely unsubstantiated opinions on this.
Personally, I can't get over the feeling that it is madness to teach an obsolete language. It just doesn't feel that we would be doing the students any favours at all by convincing them that's what real programming is like.
Funny thing here, I actually disagree with both of you.
These students are obviously not the sharpest tool in the JavaRanch tool shed.
So it must be something that they can understand and comprehend. I don't think they can accomplish that in Java or QBasic. I think it takes too much mental awareness and smarts to be able to comprehend even a simple Hello World application in both of these languages.
Think of how long it takes to grasp proper Object oriented principles. And think of how old and archaic QBasic is. It doesn't even come with the OS anymore.
If there is a Visual Basic class that is futher down the path, then maybe a better choice would be to use MS Access as the learning tool. They can build simple applications that might mean something to them, understand basic database, create forms with Textfields and buttons, and some simple Macro programming to save the data. Then maybe go a little into VBA, which leads well into Visual Basic.
Ok, this is not going to help you Frank. But after reading your description, I'm not so sure Java is the way to go. I agree with Mark that QBasic isn't either. But I don't think Access is the answer.
Have you even considered C or even C++? It's easy as long as you stay away from pointers and classes. No GUI stuff to worry about. It's the perfect langauges to learn control structures, IO, etc. IMO that is.
My 14 year old cousin wants to get into programming so this last weekend I showed him a hello world example in C, C++, and Java. He said the C++ program made the most sense to him.
As far as your real question goes, for these students, I really don't see how Java is going to be better than QBasic or vice versa. Again, just my opinion. [ June 21, 2004: Message edited by: Gregg Bolinger ]
My son Kevin (he'll be 18 soon) is just finishing the 3rd year of the Informatic Middle School Plus here in Switzerland. It's a combination between commerce and IT, and will allow immediate entry into one of the Technical High Schools (like what Einstein was at ). In the initial programming course they did a couple of lessons using QBasic and then moved through C, C++, and now they use Java for all of the programming work. QBasic was demonstrated to show how programming was done on early PCs. Java is used because of the available API infrastructure and the OO benefits.
If I had to teach programming I would choose Python. See here for some educational aspects.
As said, neither QBasic nor Java might be appropriate.
I doubt the students are ready to grasp OO concepts, as your colleague seems to want to tell you. QBasic has no market value at all and is a dead language so even as a hobby it's useless (last version shipped I think with DOS 6.22 about 10 years ago).
A better choice might be Pascal or C (not C++), which are procedural languages (IMO you should still know procedural well before moving towards OO but I was groomed on Pascal, Assembly and Cobol).
Joined: Dec 20, 2001
I tell you what, when I learned beginning programming, I learned using C++ and I thought it was excellent. Avoid pointers for a semester or so and it makes for a great learning tool that is still applicable today.
Although I've never used Python, I've heard good things about it and it might be appropriate here.
Personally, I'd avoid things like MS Access. Anything that it "half-GUI, half-code" seems like it would just cloud the issue at hand. For someone new to programming, I think such an approach would be confusing.
With Java, you can use it as a procedural language by keeping everything in one class. It would still be a little odd if you started making use of the API's and had to make calls to things like Math.Random or things of that nature. Like MS Access, I have a feeling that trying to introduce OO concepts to students too early is just going to cloud the issue - while they're trying to grasp loops or control structures, they're going to be stumbling over OO basics.
So there's my 2 cents. If I was at the table, I suppose I'd argue for C++.