It’s exam season and students are busy revising (are they?) and we want to get every bit of value, pick up every mark possible and help students towards the best chance of success for their exams. Question is – what works? How do I implement new strategies? Where do I start?
“Computers are good at following instructions, but not at reading your mind” – Donald Knuth
If you’re reading this – thank you. This blog will be a bit of a “mind dump” as I have tried various ways of helping students to prepare for their computer science exam. There may be some ideas here that you have tried that worked or maybe they didn’t, but I find it’s always good to look over the fence and see how something has been trialled somewhere else. So, without further delay:
Back in March of this year (2024) my Year 11’s finished their Mock tests (paper 1 and paper2), I had rushed the last 2 units for paper 2 with my year 11 class (databases/SQL and ethics in computing) and they sat their paper 2 mocks after the sudden rush. After their exam, they came back to lessons, and we had technically finished learning all units- so onto some valuable revision lessons. After deciding what was important for my class I needed to choose how to present the revision material. Foremost, I re-taught some areas that I knew the class were weak on, so let’s unpack this a bit as a revision technique.
Re-teaching can be extremely valuable when deployed correctly. There is a big “gotcha” here though, would you sit through the same movie twice if it was pants? I think it is important not to try to use old resources/lessons plans when re-teaching – I personally believe in mantras such as “Death by PowerPoint”, but the same mundane PowerPoint twice is just a slow, miserable and gruesome death with wasted time without any benefit. No matter what your resources are, repetition is good but “copy, paste” of what you did before just sets students up for a boring lesson while clock watching.
So, lets re-teach python functions with a twist – how do I teach this a second time but with students treating it like they are learning for the first time? Also, what do I do for those who actually fly with python functions and do not need this revision session, but I want them to get “something”? Well in short – good adaptive teaching is the answer. Do I mean have different tasks with various supporting materials for each student – heck NO – who has time for that!? So, the challenge I gave was to create a function that would add 2 binary numbers, the catch was that the binary numbers were given as strings (catch is probably the wrong word, surely this makes the task easier, my students didn’t think so). The task was set up, we did some pre-planning as a class (lets give those who are less confident some pointers to use as a start point), discussed/gathered some ideas and bullet point listed the steps on the whiteboard as students came up with them. The steps were simple, decomposed parts of the problem such as:
- Create a function called addBinaryNums
- The function takes in 2 arguments which will be binary numbers
- Loop over the binary number
- Loop over the other binary number
- When looping, start from the right
- Compare the 2 numbers from both strings and run if statements
- etc..
This is extremely important because it becomes the task board for students and is good adaptive teaching to help all students see the steps and research the steps if necessary to progress. Having this on the board gives students nowhere to hide, even if they are lost, they can be doing something as they are following instructions at this point. Then, I modelled the first 2 steps which involved creating the function itself and then accepting 2 binary numbers as parameters. I also modelled using a search engine to research the steps on the board and adapt code that I found online, this is what the starter code looked like:
def addBinaryNums(bin1, bin2):
# Loop over one of the binary numbers accepted as a string
I even added the next step from the whiteboard as a comment that we had bullet pointed to show where it goes (and help students to correctly indent the rest of their code). The task was set, and students got to work. It is important to note that some achieved this quickly while others still struggled with doing any of this independently (I thought I had taught them to be resilient 🥺). So, I also handed out help sheets with prompts such as:
- Try to remember everything in the instructions given by the teacher. Make a few bullet points on what you think you need to be doing.
- Look at the board – are there any tips/support or ideas on it, which could get you going?
- Look around at others – can you pick up any clues from what you see them doing? (This doesn’t have to be copying!) Ask your partner, neighbour or group.
- Google it – look for specific websites/forums that may also help you.
The list is much longer, but here is a few to inspire (or steal). This prompted most to get started, leaving me with one final student who was still stuck, and we walked through steps together with a tailored one to one support. However, what I had actually achieved by setting the lesson up in this way was freeing up myself as much as possible. I didn’t get the usual “sir, I don’t get it, this makes no sense, can you help me?” responses that I would otherwise have drowned in. Instead, students had everything they needed to get on with the task and practice their python skills. Oh – and the HPA (higher performing) students? Well, I had a few challenges in the bag for those that managed to finish this with haste. Namely, to include inputs and validate them to ensure that they only contained a 0 or 1 for every character in each string and to ensure they are the same length, I set this to be a new python function to be used alongside the one they had already created. I also gave them a few other challenges to extend this task and these students truly rose to the challenge and supported some peers with getting onto the extension tasks. Likewise, I repeated this activity with my Y10 class as a trial, but I also added a paired element that was set up as such: one student is responsible for writing code but cannot do any thinking/arguing, they can only write what they have been told to write. The other student was responsible for all research and telling the scriber what to write. After 5 mins, they swapped, and the 5 min intervals cycled for the entire task. This meant both students were engaged but also were debugging each-other’s work or mistakes while simultaneously learning from their mistakes. This was a great further support/scaffold to help students access this task and I highly recommend this type of structured paired approach for coding lessons. By the way, if you wanted (most of) the finished code, here you go:
def addBinaryNums(bin1, bin2):
result = ""
carrybit = False
for num in range(len(bin1)):
num1 = bin1[len(bin1)-i-1]
num2 = bin2[len(bin2)-i-1]
if carrybit:
if num1 == "1" and num2 == "1":
result[0] = "1"
carrybit = True
# You can add the other outcomes yourself from here on
# including those sums that do not have a carry bit
In summary, I have “re-taught” an area of learning (python programming) but in reality, students have revised binary addition, been re-taught python functions as well as revising areas such as iteration (loops), selection (if statements) and developed their ability to solve problems. Everyone was challenged and the class environment felt good – I would highly recommend this approach, but not for every lesson because it can be time consuming to find new material for areas you have already taught. Besides, “Re-teaching” is in our comfort zone, right? I mean – we are teachers, and this is what we live for isn’t it? We know that our teaching works so why reinvent the wheel? Well, it can get tedious so there must be alternatives – and there are! So, on the next strategy – past paper/exam questions in the classroom.
I want to start by splitting this up, I want to eliminate sitting a mock paper in silence as a revision technique because it isn’t. Students will either feel confident or terrified having sat questions in silence, and if it is the latter, going through them later so they can see their obvious blunders just reinforces their fears that they cannot do this exam and will fail anyway, so let’s not do that. Instead, what I did was pick out some questions from a past paper and set the task of answering but the class could use resources to do it. They can use search engines, look in their books, check resources or revision booklets to help – anything that they know works. In my head, this sounded great, some freedom, a nice relaxing afternoon of revision and students working at their own pace while developing their knowledge of the subject. The execution was far removed from my ideology. Instead, Frank decided to google some trainers that he wants for his birthday, Amelia spent ages chatting to her peers about who knows what. It was obvious that despite my own feelings of urgency towards the upcoming exams, it wasn’t some contagious feeling of anticipation that I was spreading to the students. So, should we abandon this idea? How can you? It is written on every website and resource relating to revision, it must work for others…
So, what does work? It obviously depends on your teaching style, but I adapted this idea. Instead of the whole paper, we did one question at a time as a class and the pace was something that I am in control of. This time however, students answered the questions on a mini-whiteboard with a whiteboard wipeable pen. I put the question on my interactive whiteboard and gave students some time to answer it on their whiteboards using a timer. Then, after the timer had expired (give roughly 1 minute per mark with a spare minute or 2 for each question given if needed), students held up their answers for all to see. An interesting and unexpected scaffold here is that students write with larger handwriting on whiteboards. So, for anyone who was not sure or needed a prompt, they could see their peers working on the same question and could also take a sneaky peak at their neighbours’ answers for help (yes Jack – I saw you). They didn’t copy each other but used this cheeky sneak peek opportunity to get some ideas to structure their own answer, I had no issues here at all as this is no different from thinking hard and using some prompts to give you a boost. This approach was far more engaging. Despite the rapid advance of technology in the classroom and the available, brand new, high spec computers as well as numerous resources that students have in the modern world, nothing seems to be as enticing as a good old fashioned mini whiteboard and whiteboard pen (perhaps Carol Dweck might want to investigate what truly motivates children).
What did surprise me more though was that students only cared about their own answer and being “correct”. I would have thought that they would be looking at what their peers had written as soon as whiteboards were waving around in my classroom and engaged in some healthy competition, but they did not seem interested. I encouraged this greatly at each “answer reveal” and students started to do this autonomously and comparing answers – perfect! A collaborative environment with students sharing ideas and their answers is exactly what the doctor ordered, and everyone showed that they were engaged and revising/learning. The final part of this trick is then revealing the answer and getting students to highlight where they lost marks before moving on. Students can then see where they lost marks before updating their answer one final time, showing the class again how they would have got more/full marks before wiping their answer away.
After doing a whole batch of questions (say 6 or 7 depending on how many marks they could award) without using the workbooks and removing any answer schemes from the board, I then gave students the task of answering them in the exam paper that they came from now that they have recently looked at them. Students now have the opportunity after having learned/developed knowledge for a specific question to recall that knowledge and attempt to answer the question again while also improving exam question technique. If you wanted to add a bonus round at the end of the lesson, you can also get students to peer mark all questions too which will also get them revisiting familiar content a final time to really push any content revised and maximise chances that our students potentially retain this knowledge.
Ultimately this strategy now works. All students are engaged, and I can gauge the learning happening and also see the lightbulbs going off with students remembering content that we have explored in lessons gone by. We have made something that previously was monotonous and boring take on a fresh, competitive new approach that students want to be part of. They are learning/revising and overall, students are progressing and becoming better prepared with actual exam questions – a brilliant way to prepare my students for their exam and I really recommend this spin on the past paper questions revision technique.
Some other techniques I have trialled include using flash cards or revision booklets and other similar strategies that I found did not work for the whole class. When doing this, students worked in pairs quizzing one another and I even tried to do a point system to introduce a bit of competition. However, the temptation when given autonomy over one’s own learning can be too great. Often, students were not on task, chatting about football and wasting valuable time – the opposite of what we are trying to achieve. Perhaps there is a better way to set this up but I couldn’t think of/find any. I have also trialled a group teach approach by grouping students and getting them to prepare to teach an area of weakness and researching this ready to teach/present for a predetermined set of time. The key here is students researching something that they are less confident with, improving their understanding/learning but also, they get the opportunity to teach it which also means that students are reinforcing their learning.
The group teach strategy is now an area of development. I am still in the process of refining this to fix “bugs” that I have found with this strategy. Namely, students being excluded from the activity or not starting because they either don’t want to participate or lack the confidence in the group, area or themselves. This happened to me recently, I set a task of having students prepare to teach areas such as “how to add binary numbers” or “how to convert binary to hexadecimal”. The issue is that the group (say 4 students) seem to gravitate towards having a leader or small subdivision of the group who takes over, and the remaining students who will then do something off task or nothing at all. The problem is that it is this small group who are no longer engaged that I am targeting with this activity – so frustrating! My plan is to adapt this activity further so that there is no “opt out” and students feel the responsibility and have nowhere to hide. I had hoped that the anticipation of presenting work to their peers would motivate students, but it seems that they are happy to load all of the work onto other students (sounds a bit like the real world to be fair), and take a back seat while reaping the rewards.
I hope you have enjoyed some ideas here and maybe have something to try/take away. I have trialled some of the popular “go to’s” but there are many strategies that either will or will not work that can change based on the class/teacher combination. Just like everything in teaching, there isn’t a silver bullet. There are strategies you can use but there are a mix of personalities, preferences and people in a classroom. Strategies, teachers and students need a good match in order to maximise learning and help students reach their potential. I have discussed some that I have tried but I am always keen to try something new and adapt ideas to really put the learning of my class at the forefront of what we do in class. As my career develops, I will continue to search for, try and adapt ideas in the classroom that my students benefit from.
