Software and People

I'm currently planning a Software Development course that I will be teaching from September. It's one unit from a BTEC National Diploma for IT Practitioners from Edexcel.

I've got a few issues with this course, and its assessment as defined in the Edexcel guidelines. One of the major problems is that the course specification seems to use terms loosely (or flat-out incorrectly), which leads to misunderstanding and confusion among teaching staff. Who knows how complicated it might be for the students?

Anyway, I'm currently planning to teach this module using Java as the programming language of choice:

    Centres may choose any appropriate language as a vehicle for developing this unit, eg Pascal, C, or Standard BASIC. Though it is recommended that learners develop programs in a conventional procedural language, a modern language such as Visual Basic could be used provided emphasis is placed on basic programming concepts and constructs rather than event-driven, visual interface components.

It is somewhat worrying that the only types of programming language it considers are "a conventional procedural language", and "a modern language such as Visual Basic". I'm guessing that whan they say "procedural", they really mean something more like "imperative". Otherwise they are ruling out a whole host of language paradigms, including Object Oriented, List and Stack based, Functional and so on. One colleage who will also be teaching this unit questioned my suggestion of Java on the basis that Java is too "OO" and maybe we should teach a pure procedural language (he suggested TurboPascal, I seem to recall). If we do, I pity the poor students we send into the world thinking that they have gained a useful and marketable skill. Heck, I'd rather teach them Perl, or PHP than that, at least they'd be able to use it outside the college.

When we get to the assessment criteria, I'm frankly boggled. Among other things:

    To achieve a merit grade the evidence must show that the learner is able to ... use an appropriate tool to analyse a piece of code to ascertain its semantic correctness.

Where do I start? If we had a tool to "analyse a piece of code to ascertain its semantic correctness", software development sure would be a lot easier. The nearest I can think of is something like JUnit, but that somehow doesn't seem to be what they are on about. Any suggestions?


The best tool to ascertain the semantic correctness of a piece of code is the human brain. It's your duty as a teacher to train your students to recognise correct code from incorrect so they can employ that brain to meet that course objective. After all, the SCJP exam has a similar goal...
I agree. What worries me is that the examining board seem to either (a) have some idea that there exist effective software tools to do this, or (b) can't tell the difference between semantic and syntactic. I'm not sure which is worse.
I've only just found this on the web. We are going to be doing this unit next year and decided that what they mean is some sort of tracing/testing solution to try and prove the correctness of the program, but unless you teach formal methods then they can't prove it.

I hope they don't mean syntactic: I'm not enormously impressed with the way they've set up units such as Unit 32: Visual Programming anyway.

I think you are being too harsh on Pascal. We have come to the conclusion that unless you are teaching a pure OO language, e.g. Smalltalk, then having a good grounding in Pascal helps enormously. I also think that having two languages under one's belt is better than one.

TrackBack to http://radio.javaranch.com/frank/addTrackBack.action?entry=1085151187000