Having reliable news always matters to us: whether when disasters strike, of knowing for sure what our politicians really said, or just knowing what our favourite celebrity is really up to. Nowadays social networks like Twitter and Facebook are a place to find breaking news, though telling fact from fake-news is getting ever harder. How do you know where to look, and when you find something how do you know that juicy story isn’t just made up?
One way to be sure of stories is from trusted news-providers, like the BBC, but how do they make sure their stories are real. A lot of fake news is created by Artificial Intelligence bots and Artificial Intelligence is part of the solution to beat them.
Sameena Shah realised this early on. An expert in Artificial Intelligence…
One of the problems faced by computer teachers is that the subject is considered abstract and difficult. Block coding and physical computing are useful ways to make the subject more … tangible … more hands-on, more contextualized. But guiding a class through learning pathways that build computing concepts carefully is not easy. If you are anything like me you have very limited contact time with each class and have students with very different backgrounds and exposure to coding. The lack of a recognised syllabus and the fact that many schools do not teach computing beyond digital literacy or basic apps, mean while some students have used Scratch coding or Bee Bots, or whatever, many have not. Some struggle with even using a computer.
A useful approach is to use starter code. Much as one cannot write before learning to read, one needs to be able to read code before one can write code. For any coding task, I like to give a class some starter code. I start the lesson by asking the students, in pairs, to predict what the code will do. We discuss the insights they come up with and then I usually introduce any new concepts or code blocks they will need to use. While some students may have come across these concepts before, it is a chance to introduce new ideas to those who are less experienced in coding without really slowing down the rest of the class.
Starter Code gives an opportunity to revise concepts already learned by asking students to fix errors in the code they should be able to spot, or a chance to stretch a class by getting them to experiment and tinker a little. You can spoon-feed a class that needs that by providing more of the code, or really challenge another class to come up with ideas on their own. My four current grade 9 classes, for example, each require slightly different scaffolding and I can give each one slightly different starter code. Or at the very least you can leave comments in the code, or in class that help classes work towards finding solutions that will accomplish the task.
To help students read the starter code you can use tools such as trace tables to keep track of the value of variables. You can use a flow chart to help them understand what a program is doing, which they need to compare with the starter code. Or they can be asked to design or complete a flow chart before tackling the code. I know this sounds very touchy feely, and it is. So much depends on the context and what you think a class can handle.
One aspect I find students often struggle with is when they come to move from the coding platform to testing their code using the robot or electronic equipment they need to build whatever it is they are building, be it a burglar alarm, sound activated lights, or whatever. This requires that students be able to read the physical results of their code. Why is the light not coming on? Why is the alarm not going off when expected? What needs to change in the code? The movement between abstract and concrete is always tricky, but even with physical computing, that gap is not something to be taken for granted. digital write pin 0 to 1 is not self-evidently a signal to switch on a light via a relay switch. Some students get this quite quickly. Others really struggle. I strongly suggest building tasks and challenges quite incrementally. Set a task that just uses the digital write pins to switch a light on or off before you introduce code to make this conditional on sound or light level inputs.
One way of doing this is to have a worksheet with a series of small tasks which students need to complete Bingo style – complete all the tasks on your card as quickly as possible. Each task adds to knowledge in small incremental ways. Anyone completing all the tasks will have engaged with multiple skills relatively painlessly because each task is quite small. I did a workshop recently with grade 6 and 7 girls using this technique to introduce them to the BBC micro:bit chip. The workshop covered 16 small tasks in under an hour and a half. I was exhausted but the students seemed to have a lot of fun.
Physical Computing is, I believe a fruitful avenue for bridging the gap between abstract and concrete, but needs techniques such as starter code, reading code before you write it, and careful scaffolding of code to work. You cannot simply ask students to start coding and hope for the best. How physical components are coded needs to be an essential part of that process as well. All of this needs more time than most of us are given in the curriculum.
Every afternoon after a regular school day, a group of girls from inner city schools come to Roedean School (SA) to take lessons in Maths, Science and English. In the winter term I take a group of grade 10s for coding & robotics classes. We use the micro:bit chip, which has a handy online platform for programming the chip at https://microbit.org/. None of the students have had any prior experience of coding or robotics,
After an initial lesson on the platform and learning about how to use the blocks together with event handlers, I introduced the robots (in this case Maqueens from DFRobot). We went over some code for getting a robot to move forward using thePRIMM method to predict, test and modify the code to get the code to work. Stduents were working in groups of two or three. Each group had a chip and robot to use to test the code they wrote. When a group could make the robot move forward for a length of time, I asked them to make the robot turn 90 degrees and move forward again.
Because making a turn relies on tinkering with motor speed and duration of the move, this is no easy task and requires repeated attempts. Soon the room was full of groups either modifying their code or shouting in excitement as the robot’s movements got closer and closer to the desired result. After the initial input I spent most of my time moving from group to group encouraging them to try again, reminding them to switch off batteries between tries and making the ocassional suggestion where students got stuck.
I have seldom seen high school girls quite so excited about anything. Of all the different combinations of platforms and robots I have tried, the simplicity of the micro:bit platform paired with a suitable robot seems to work best for this type of task. In the past I have found that girls tend to shy away from failure, and tinkering with speed/time settings does not usually sit well with them. There are repeated failures before an appropriate combination is reached. An essential part of developing a tinkering disposition is to accept the frustration of repeated near misses. I have seen classes start to loose interest if the process of modifying and testing is too onerous. The micro:bit platform allows one to pair a chip with a computer using a USB cable and then all one needs to do is click on the download button to update the code on the chip. I leave the USB cable on the chip so it curls in the air like a rat’s tail. This allows a very quick turn-around time and if combined with a bit of a competitive edge, encourages a sense of urgency!
It seems to me that whatever coding and robotics platforms you choose it really needs to be as effortless as possible. The sweat should be in the coding, not in flashing the chip. It also helps to have as many robots and chips as you can available to make sure no-one has to wait for a chance to test their code.
By the way, this post has not been paid for by the micro:bit organisation. This is genuine, and unremunerated enthusiasm on my part!
I talk to Phil Bagge, Computing Inspector/advisor HIAS, CAS Master Teacher, speaker, trainer, author of http://code-it.co.uk free resources & 2 books. We talk about teaching computing, particularly in the primary school.
In this week’s episode I talk to Jeanette Viljoen, HOD ICTs and Technology at Roedean Junior School in Johannesburg, South Africa about teaching ICTs in the junior school.
Lesson planning is not something anyone enjoys, and I am not a fan of overloading teachers with mindless bureaucracy. The best teachers I know never write anything down. A teacher who sticks to a plan rather than rolls with the punches frightens me somewhat. You cannot forge ahead and teach the iambic pentameter if you realise that the class does not understand what a syllable is. You have to change course and teach the syllable first – surely? Plans are made to be changed. But a teacher does need to have a plan.
That plan needs to include a roadmap of where you want your students to go. Clearly the biggest component of any planning is about the major concepts and skills you want students to acquire, but frequently teachers are asked to map their lesson planning to Bloom’s taxonomy to ensure that higher order thinking is sufficiently represented. I find this somewhat hit and miss. Frankly it has never made much sense to me. Understanding does not seem to me to be a lower order thinking skill. To comprehend one needs to synthesise and analyse. Similarly, why is knowledge lower order? Knowledge is not just recall, but requires comprehension and evaluation. Mapping to Bloom’s is always a bit of a thumb-suck.
It seems to me that if you want to ensure higher order thinking is taking place, you are really wanting to move your students from the kinds of everyday understandings of the world they bring to class, largely simple and concrete, towards a more academic undertsanding, more abstract and complex constituting the target knoweldge of any discipline. Karl Maton (2014) has written extensively about the semantic plane and how crucial it is to consider semantic gravity (contextualized or abstract) and semantic density (simple or complex). I find it useful to draw on Maton’s semantic plane to plan this aspect of any unit of work. Mapping each task I set students to a cartesian plane with 4 quadrants (simple & concrete, complex & concrete, simple & abstract, complex & abstract) allows me to get a quick sense of the journey I am taking students on and ensures that I am not operating just in one mode. Generally speaking it is making those movements, what Maton calls tours, that is important for building understanding. Movement is what makes for good teaching and good learning. Abstract and complex ideas need to be broken down, made concrete, made simple for students to understand. Likewise, students need to take their understandings and learn to reformulate them in more complex and abstract academic discourse. As a teacher, if all your tasks are stuck in one quadrant, you are probably not helping students make these vital tours. Your lessons may be too abstract and dry or too framed in the here and now, in which case what are you actually learning?
I know that all of this is going to be received with a measure of scepticism. One more thing to do for what gain? The gain for me is very real though. Each activity I set tends to have a main teaching point in mind, and as I plan these tasks and assignments, mapping it to the semantic plane helps me identify the main point and get a sense of how to approach teaching it. For example, in the slide above, part of a module on Office applications in my ICTs class I set two Excel spreadsheet tasks: one a budget, the other an interactive quiz created by students using formulae to be self marking with an automated scoreboard. In the budget task I introduced the idea of some of the formulae and functions students would need for the quiz project. I classified the budget as an abstract/complex task because I wanted students to realise that functions such as the autosum can be used in many different spreadsheets. I tried to teach it as an abstraction that could then be applied by students in their own spreadsheets. In the quiz task I did not re-teach the autosum, I simply asked students what function they already knew they could apply to create a scoreboard. I was asking them to recontextualize their existing knowledge and planning it on the semantic plane was for me a short-hand method for planning my pedagogical approach. Similarly the quiz project requires the conditional function for judging if an answer is right or wrong. My concern when teaching this was to teach students to identify which functions could be used for any purpose, a movement from abstract to contextual. By thinking through in their heads what they want the computer to do, I wanted students to listen for key words (eg. IF) to help identify which function could be used. The major movement is thus consistently from abstract to concrete, but with simultaneous levels of complexity.
To my mind the semantic plane offers a much more reliable measure of critical thinking than Bloom’s taxonomy and presents a visual representation of planning for any unit of work.
Bibliography
Maton, K. (2014) Knowledge and Knowers: Towards a realist sociology of education. London: Routledge
I gave four keynote talks in the last two months, at SIGITE, Models 2021 Educators’ Symposium, VL/HCC, and CSERC. I’m honored to be invited to them, but I do suspect that four keynotes in six weeks suggest some “personal issues” in planning and saying “No.” Some of these were recorded, but I don’t believe than any of them are publicly available
The keynotes had a similar structure and themes. (A lot easier than four completely different keynotes!) My activities in computing education these days are organized around two main projects:
Defining computing education for undergraduates in the University of Michigan’s College of Literature, Science, and Arts (see earlier blog post referencing this effort);
Participatory design of Teaspoon languages (mentioned most recently in this blog post).
My goal was to put both of these efforts in a historical context. My argument is that computer science…