The platform is generally excellent, but there are a few issues which need to be taken into account when implementing it as a coding platform. You will note that I am not considering the wider question of whether to offer coding to all students. To my mind it is crucial that all students get some exposure to coding, not necessarily because everyone will be coding in their jobs, but because I believe everyone needs an understanding of how coding works, and because I think it helps develop problem solving skills generally! The command line interface, rather than the more usual drag and drop “Scratch” style interface helps develop skills of accuracy and precision.
The issue that I want to address is how the platform can be used pedagogically, because I believe it cannot simply be used on its own. The teacher cannot simply point students in the direction of the platform and walk away! I want to draw on Semantic Wave theory, which I have discussed in a YouTube video, to demonstrate what I mean. To recap, teaching and learning is crucially about the deconstruction and reconstruction of meaning (semantics). Teachers help students to unpack ideas, helping them understand complex or abstract ideas using metaphors, examples and everyday language so that they can understand it in their own terms. Teachers then help students to take these raw, more experiential, concrete or simple ideas and reformulate them in more academic understandings. An example would be when a teacher models the unpacking of a work of literature, exploring the themes and imagery of a Shakespearean play and then scaffolding a student’s writing so that they can take incidents from the play and tease out the thematic concerns in a coherent literary essay. Knowledge is deconstructed and reconstructed.
This movement between abstract and complex and concrete and simple, and hopefully back again is described in the research literature as a semantic wave. Research into good practice in the classroom suggests that good teaching and learning requires a full range between abstract and concrete, complex and simple, and repeated waves over time. My own research interest lies in looking at what affordances technology may offer for meaning making practices in the classroom.
I have recently done an analysis of the lowering or strengthening of semantic gravity and density in one of the Code Combat units which taught web design skills (HTML and CSS). What emerged was a pattern not too unfamiliar in the classroom with traditional face-to-face instruction. The software was very good at explaining concepts, introducing an idea, such as a mark-up tag, and giving concrete examples so that students could understand what an HTML tag looks like, and what it does. Across the thirteen levels of the unit there were repeated movements between abstract and concrete as the software unpacked each of the concepts involved. Very little opportunity was given for students to explore the examples and try to reconstruct knowledge by, for example, creating novel tags. Only in the final two lessons was there any emphasis on encouraging students to build knowledge themselves.
This type of semantic wave, a movement from abstract (weak semantic gravity) to concrete (strong semantic gravity) is very common in the classroom. It is termed a “down escalator”. Down escalators are essential, and problematic only if they form the major part of the diet and are seldom accompanied by any upward movement of the wave. In other words most of the class is simply explanation, with very little opportunity for students to explore their own understandings and construct knowledge in their own voice.
This happens more often than we would like to admit in classrooms, but with digital platforms it is even more common. In fact this unit of work offers quite a decent nod at constructivist pedagogies with a fairly open ended final set of units in which the student is invited to use the knowledge they have gained to create their own web pages. When students construct knowledge, sound educational practice is to carefully scaffold this to help students draw valid conclusions. Experienced teachers are skilled at doing this, but educational software is not. Perhaps developments in Artificial Intelligence will render it more effective, but currently machines do not respond to what students are doing with much insight or facility. This makes the Instructional Design absolutely vital. If all the software does is help explain concepts to students, but never give them an opportunity to use that knowledge to reconstruct it in their own understandings and voice, that knowledge will never be internalized. Machines are ill-suited to this task. In this Code Combat unit of work the Instructional design does in fact give some opportunity to take knowledge of one tag, for example, and try it with another, or see what happens when the properties of tags are changed. There are in fact partial upward movements of the wave. part of the reason I chose Code Combat as a platform was that it does a reasonable job of explaining and giving an opportunity to practice skills, but it is clearly not enough.
In order to provide more scaffolding I had two choices. the first was to ensure that I was able to jump from student to student as they worked on the units, helping mediate the content to ensure greater opportunities for exploration. This might be practical on an individual basis, but almost impossible with a class of thirty as I had. I was also reluctant to become the expert, solving everyone’s problems. That way nobody except myself would learn anything! Debugging student code is also very time consuming, and in a class of thirty would give me, say one minute with each student, always assuming I could help spot any problems in that time!
The second option was to encourage students to work in pairs and provide peer and teacher mentoring. The aim of this was to ensure that students always had someone else present with whom to discuss what they were learning, help overcome problems when students got stuck, to try out ideas and compare code – “why does yours work and mine doesn’t?” This provides students with opportunities to explain to others why their code seems to work, and what their thinking was, and helps, I believe, build a better understanding over time. It also helps students to express their ideas about what they are doing and weakens the semantic gravity by getting them to abstract their thoughts out. Indeed when I do help a student what I try to do is ask them what they are trying to do rather than trying to fix the issue myself.
Peer mentoring and collaboration is a powerful way to bridge the gap between the instructional power of e-learning software, and its somewhat less potent ability to foster constructivist learning practice.