?

Log in

No account? Create an account
Programming languages in schools - The Ex-Communicator

> Recent Entries
> Archive
> Friends
> Profile

January 22nd, 2012


Previous Entry Share Next Entry
10:14 am - Programming languages in schools
I have just written a post on the new computing curriculum for schools. People might be interested in the list of suggested programming languages. This is not mandated, but I think it is interesting. It is found on page 13.
Every student should have repeated opportunities to design, write, run and debug an executable program. What an executable program means can range widely depending on the level of the student and the amount of time available. The following are included in programming:

  • Small domain-specific languages, such as instructions to a simple robot, or Logo-style turtle.

  • Visual languages such as Scratch BYOB or Kodu.

  • Text-based languages, such as C#, C++, Java, Pascal, PHP, Python, Visual Basic, and so on.

  • Scripting languages, such as shell scripts, Flash ActionScript, or JavaScript.

  • Spreadsheet formulae


I do not know how actual teachers will approach this issue. Teachers in general will be out of their depth here. If I were to get involved, let us say as a writer, I would probably use Javascript as the exemplar. I would be interested in the opinions of anyone who works in programming.

(41 comments | Leave a comment)

Comments:


[User Picture]
From:wwhyte
Date:January 22nd, 2012 11:44 am (UTC)
(Link)
I wonder about Javascript as the starting point. The way you have to embed it in one part of the page and then invoke it from another is a little confusing (more than having to compile a C program? I don't know).

I'd be more inclined to start with a language with a really good Integrated Development Environment (IDE). I haven't done any C#, but Visual Basic (fifteen years ago!) made it really easy to get started in writing things with GUIs, and Eclipse is a great IDE for Java.
[User Picture]
From:kerravonsen
Date:January 22nd, 2012 12:09 pm (UTC)
(Link)
Oh, please no, not Visual Basic. (shudders)

I'm not sure whether concentrating on IDEs is a good idea, because they could learn the IDE rather than the language, if you see what I mean. On the other hand, IDEs do often make debugging easier.
[User Picture]
From:kerravonsen
Date:January 22nd, 2012 12:04 pm (UTC)
(Link)
It's rather interesting how they choose to categorize the languages, particularly what they call "text-based languages" and "scripting languages", since some would call PHP and Python scripting languages. Do you know how they decided on the categories?

Javascript as an example... I can see a number of things that it has going for it, yes.
1) You can do cool stuff with it, which makes it attractive to use.
2) It is rich enough in its expressiveness that one can introduce quite a few programming concepts with it (including object-oriented programming, which is an advanced concept).
3) All you need to use it is a HTML browser and a text editor.

Some things that could be considered either advantages or disadvantages of Javascript:
4) You don't have to declare variables before using them, which means that it's less fussy, but also that one is more vulnerable to typos.
5) You have to know HTML in order to do anything useful with Javascript.

Mind you, in one sense it doesn't matter what the language is - one can program badly in any language, especially if one is badly taught. It isn't the language that matters, it's the discipline of programming itself, which is transferrable to any language. Which I suppose means that the first language they are taught is important, if it's a language that encourages good habits.
[User Picture]
From:communicator
Date:January 22nd, 2012 02:44 pm (UTC)
(Link)
I know nothing about how they arrived at this list. From my experience on committees people made suggestions for social reasons, within the group dynamics.

I do think that Logo and Pascal are reasonable teaching languages, even now. But Javascript as you say has the 'do cool stuff' advantage, which I think is quite significant for school kids.
[User Picture]
From:muuranker
Date:January 22nd, 2012 01:15 pm (UTC)
(Link)
I am not an actual teacher, but this is how I would approach this:

"Repeated opportunities" = at least three times during their school life?

I mis-read "Logo-style turtle" as "Lego-style turtle", so I would buy some programmable bricks, and get people to make turtles..... There are great online communities, I understand, and teaching the children how to ask for help online / give help online is surely enough, I won't actually have to know anything!

Spreadsheet formulae is another easy one with lots of online teach-yourself stuff.

And then I would give up with the list and teach flowcharting and process design.



[User Picture]
From:communicator
Date:January 22nd, 2012 02:48 pm (UTC)
(Link)
I think Logo is a nice language for little kids, and the turtle rushing about the floor. People scorn it though.
[User Picture]
From:nja
Date:January 22nd, 2012 01:48 pm (UTC)
(Link)
From an engineering perspective:

Arduino programming ought to be within the grasp of any secondary-level child, and will also teach a little about electronics. It is basically C with some C++ features, with some of the complexities hidden. There's a lot of satisfaction in programming that does something, even if that is just blinking some lights or driving a little electric motor.

If I didn't have to teach C (as a prerequisite for other things), I'd go for Python. I used to use Perl, which had a similar philosophy that you shouldn't have to know everything about the language to be able to do fairly complex tasks. Python has clearer syntax, and because of the emphasis on indentation it is much less easy to write messy code (one of my perpetual struggles with engineers, who tend to take the "if it works that's all that matters" approach, is to convince them that my insistence on neat code layout and proper indentation is not because I am some sort of Wildean aesthete, but because it is important).

Does anyone use Pascal any more? Outside of Delphi, that is?

Interesting that it doesn't mention graphical programming - we've had very good results teaching LabVIEW to students, and Lego MindStorms uses a variant of that. Again, not just writing a program to print stuff, but to communicate with objects in the outside world.
[User Picture]
From:communicator
Date:January 22nd, 2012 02:46 pm (UTC)
(Link)
I just wrote a book for a curriculum in another country which is based around Pascal and pseudocode, so it is still used. I think it's a good teaching language.

The problem with a curriculum is that it either mandates, and gets out of date, or leaves the question open, and can lead to confusion.
[User Picture]
From:happytune
Date:January 22nd, 2012 02:03 pm (UTC)
(Link)
Well given that the vast majority of ICT teachers in the country don't actually have computer science degrees, and are, in the main, media studies backgrounds (this is a fact, btw), I'd say most of them are probably a bit screwed.
[User Picture]
From:communicator
Date:January 22nd, 2012 02:47 pm (UTC)
(Link)
Quite. The curriculum is a sideshow compared to the development of teacher skills. Possibly ICT should be delivered by peripatetic experts, like learning musical instruments.
(Deleted comment)
[User Picture]
From:nja
Date:January 22nd, 2012 04:08 pm (UTC)
(Link)
I think it depends whether you want to get across some of the trickier concepts (I reintroduced pointers and call by address into the C course when I took it over a few years ago because I agree that sort of thing is important at university level especially when many of them will go on to an embedded systems programming module), or whether you want to get across some of the more basic elements of programming (loops, variables including objects, why on earth you would want to write a computer program yourself). At school level, writing simple programs, I don't think you'd need to get into the reasons for some of the side-effects you mention because they would be unlikely to crop up.

On the other hand, the lack of explicit variable declaration is a problem (in Perl, you can get round this by saying "use strict", which prevents you from introducing new variables without explictly declaring them). I had a student once who was so dyslexic he couldn't spell "hours" consistently, and he found programming a nightmare because the compiler kept saying "no such variable" and he couldn't spot his own spelling mistakes. With a language like Python, if you mis-spell a variable as "houres" halfway through a program, that's legitimate, and school students are much more likely to make that sort of mistake.
(Deleted comment)
[User Picture]
From:sugoll
Date:January 22nd, 2012 06:33 pm (UTC)
(Link)
I have a knee-jerk reaction to C#, since it's a Microsoft invention, but I have absolutely no experience of the language itself upon which to base that. However, a curriculum should not lock you into paying money to a specific vendor of software, whoever it happens to be.

I'd recommend Java above both C++ and Pascal; Pascal's too dated, and C++ is, IMO, enough rope. I'd much rather people used C than C++.

I don't have a preference between Python or PHP; I hate Python's enforced indentation, but have nothing against it beyond that. Perl's too mad for a teaching language: it's write-only code, and it's far too easy to make a mistake that has an actual special meaning.

The advantage that JavaScript has is that it's basically part of HTML5, so you're into standards-based territory. But the development environment and debugging is an utter nightmare.

Go's on the up, it seems, but I don't know anything about it myself.

No Intercal? :-)
[User Picture]
From:communicator
Date:January 22nd, 2012 07:03 pm (UTC)
(Link)
I can remember listening to a radio debate about thirty years ago and some employer was saying school kids should learn software package x which he used in his company. And of course that software was extinct before those kids would have even left school. So, my argument is that languages need to be taught via some kind of exemplary teaching language and development environment, which perhaps doesn't exist.
(Deleted comment)
[User Picture]
From:cdybedahl
Date:January 22nd, 2012 06:48 pm (UTC)
(Link)
What programming language(s) to use in teaching is an age-old debate. About the only thing that you can say with any certainty, is that whatever language you choose, it's pretty sure it'll be obsolete by the time the student finishes school. Apart from that, mostly it's saddening to see the inclusion of languages that are held hostage by one single company (Microsoft and Adobe, respectively).
[User Picture]
From:communicator
Date:January 22nd, 2012 07:00 pm (UTC)
(Link)
Yes, the issues are precisely those. The writers of this curriculum should be addressing those questions.

I think there's an argument that schools should teach concepts via a specialist teaching language like Logo or Pascal. However those are both extremely old fashioned now. But really a curriculum should begin by considering issues like that.

The curriculum is introduced with an endorsement by Microsoft and by Google, and this govt wants to involve commercial companies in the development of the computing curriculum. It is felt this will make content more relevant to employment, but as you say there is a problem with obsolescence, and a second problem of being too closely aligned to a particular company.
[User Picture]
From:espresso_addict
Date:January 22nd, 2012 07:58 pm (UTC)
(Link)
I asked Mr EA and I think the gist of his answer was that the language is far less important than learning the logical basis behind programming. I think it's tremendously important to use specialist teachers who know how to get across programming concepts, while making the exercises fun and relevant to the kids.
[User Picture]
From:communicator
Date:January 22nd, 2012 09:01 pm (UTC)
(Link)
I agree with him about the language and I am coming round to the idea that we need a new teaching language and teaching approach.
[User Picture]
From:gair
Date:January 22nd, 2012 11:54 pm (UTC)
(Link)
This is COMPLETELY IRRELEVANT but I wondered if you might be interested in these Misfits vids, as recommended/introduced by heyiya? I didn't persevere past the first ep of Misfits, so I haven't looked at the vids, but I always like your posts about it and the vids sounded like they might be up your street...
[User Picture]
From:communicator
Date:January 23rd, 2012 09:27 am (UTC)
(Link)
Oh, thank you, I will look at those tonight when I get back from work. I hope you are having a good time in Australia :-)
(Deleted comment)
[User Picture]
From:communicator
Date:January 23rd, 2012 09:28 am (UTC)
(Link)
Thank you for that, what an interesting concept. I love the way you made the class work without teacher control. My daughter is doing one of her degree courses at a US university via an online thing.

> Go to Top
LiveJournal.com