I love these 'discussions'
@Martin Gregorie
I want what you're smoking, maybe then I would start to like my employers. Anywho, you'll find an awful lot of java web applications do have a graphical frontend. I'm not saying that Java isn't used as a backend, but I've never seen it (yes, humour intended).
Pseudo-code is by far the best to teach first.
I self taught Basic, then a small amount of assembly. School taught us pseudo as the teachers knew no languages, Best education I've had to date.
Elec degree at uni taught us pseudo, C and assembly. Because that's what we'd use as gingerbeers (Okay, HDLs too).
In current job a firm is being contracted to write fairly simple embedded system (I wasn't allowed, despite the saving it could have made the company, because I would have actually enjoyed it). They tried to insist on writting in C/C++. ???? Why?
I mostly work in C, but there is no doubt that this project should be done in asm. It's just not big enough to need high-level.
So, how about teaching the students a short bit on asm. a larger bit on C and some on a language like Java (about as much as you teach on C). There is nothing wrong with any of these languages (well, okay lots wrong, but meh ;) so let the students learn the differences and where each should be used. Of course, start with theory of structure, modules and pseudo code.
A project on a language of their choice should be given (ie, write tetris, choose any of the taught, or maybe untaught, languages to do so). I think this is what is called an education, unlike what most places seem to give now.
To the above comment, solving problems comes down to extracting fingures and trying to think. Kids of today sit back and expect everyone else to do the thinking (Yep, I'm nearly one of these kids, and I do work with these kids in my free time). They are always given the answer so don't ever expect them to work it out.
Can we have an icon with a teacher/lecturer being spanked please?