Why is it so hard to teach programming? Why do some people just
not get it, while others find it obvious, and how do they
differ, if at all? Does how we teach programming make any
difference, and, if it does, how would we know?
This seminar will mostly fail to answer these questions, using a strong Computational Thinking framework to characterise a multiplicity of approaches to teaching programming, exploring the contradictions between providing a pedagogically sound programming education and making students industry ready. In particular, a critique will be offered of constructivist approaches, from microworlds through Objects First to visual environments, for their failure to support core programming concepts of abstraction and variables. To conclude, an ongoing experiment, to establish at what stage young people can apply abstraction to patterns in simple arithmetic problems to introduce variables, will be presented.
This seminar will involve audience participation, so please bring pencil and paper.