STEM Learning work to achieve a world-leading education for all young people in science, technology, engineering and mathematics (STEM)
To deliver positive impacts on young people they work with teachers and support staff working in STEM education across the UK to help improve subject knowledge, pedagogy and leadership. They do this by providing professional development, resources, bursaries, recognition and tools to teachers, technicians and teaching assistants.
In his blog post for their website Professor Greg Michaelson gives his thoughts on teaching programming:
"It's curious how discussions about teaching programming often descend into arguments about the merits of different programming languages, especially for beginners. Right now, the main divide seems to be between visual languages, like Scratch, BYOB and AppInventor, and textual languages, like Python or Java.
Visual languages are favoured because the development environments offer “quick hit” coding of simple interactive programs that are rich in graphics and sound. However, they tend to provide a severely restricted range of programming constructs, and scale poorly to more substantial problem solving.
The advantage of textual languages is that they offer a seamless path to full strength programming. The disadvantage is that they are overwhelmingly complex for beginners, involving the rote use of poorly understood libraries and boiler plate code, to get even simple programs to do anything interesting.
I've long been a proponent of declarative languages, like Standard ML or Haskell, or even Prolog, because they offer pleasing correspondences between programs and data, through case structured functions driven by pattern matching. But they depend heavily on recursive processing of recursive structures which teachers, raised on imperative languages, seem to find unnatural. They're also poorly suited to developing interactive programs.
Thinking about it, though, maybe the choice of first language really doesn't matter so much. People retiring today, after, say, forty year careers, will have started off programming in what are now regarded as dead languages. The majority will have been trained on-the-job in Cobol or Fortran, or assembler for ancient architectures. Alternatively, the minority, who learnt to program at University or College, may have started off on one of the Algols or Pascal".