My thoughts on applying Rosenshine’s Principles to Computer Science

The May holiday is coming to an end, and while school holidays always provide the opportunity for rest and relaxation, they also provide teachers and school leaders the opportunity for ample reflection about our practice.

If you have spent any time on Twitter recently you would have no doubt seen the many edu-twitter comments about Tom Sherrington‘s latest work ‘Rosenshine’s Principles in Action‘. For some time, I have believed in Barka Rosenshine’s Principles of Instruction, the simplicity, clarity and pratical nature make sense to. The paragraph of Tom’s writing that struck with me the most after reading this book brings us back to the most important aspect of teacher practice in applying well researched and thought out principles to the subject-specific domains that they will be evidenced in.

“We already suffer enough genericism in education and it would be a mistake to seek to impose a ‘Principles of Instruction’ formula of some kind into areas that it does not belong. For each subject domain, teachers should consider how the four strands apply… the way these things take form varies significantly from physics to Spanish to history to art to drama to maths and to science. Let’s celebrate that variety and not seek to confine it.”

Tom Sherrington

In my view, Sherrington has hit the nail on the head here. Schools should agree a set of generic principles for teaching practice, and I think Rosehshine, along with other research such as Making Every Lesson Count are the right places to start. After this, department teams should be given every opportunity to apply these principles to their subject specific domains. As a Computer Scientist, here is my take on applying Rosenshine’s principles to the subject that I love. I’m not going to claim this is the only way to do it, or indeed the best – just things that have worked for me, in my classroom.

Sequencing concepts and modelling (Principles 2, 4 and 8)

I think there is a piece of work for departments to do here. In my view there are four strands that are essential to success in Computer Science (problem solving, understanding algorithms, data representation and computer systems) and therefore the building blocks of these have to be structured in the correct order. Breaking these down into the skills and concepts that allow students to access the most complex tasks can then allow teachers to build on these over time. It is essential that teams take their time to do this together, so that there is a shared understanding of the order of teaching.

Take the example of selection in algorithms. Ultimately, we want pupils to be able to understand, read and write blocks of selection in a textual programming language. Rather than going straight into writing an if statement in Python, I build towards this. Start with the principle of selection in the real world; if it is raining, stay inside, if it is not raining, go outside. It may not take long to explain these models to students, but this can then be taken into other forms. From here an IF statement be created in Excel, in Scratch or in software such as Flowol, before we move to the complexity of a text based language. Presenting the complex ideas in small stages, and using different models over time allows students to build towards complex knowledge that is necessary for their success. Throughout all of this it is important that the challenge for students is high and scaffolding is put in place to support students. Identify the highest attaining student in your class and set the challenging objective there, scaffolding other learners to achieve this.

Questioning (Principles 3 and 6)

One of the biggest benefits of teaching Computer Science is often the fact that you will be in a room with a range of resources at your finger tips. Self marking online resources such as Microsoft or Google Forms, Quizziz or Kahoot can be used regularly to build in low stakes testing to check student understanding. However, I would urge teachers to focus not only on the tools for questioning, but the questions themselves! The work of Computing at School (and others) to develop Project Quantum is fantastic and is often one of my go to resources. Project Quantum is a collection of well over 75 multiple choice quizzes that test student understanding.

Sherrington uses the questions have you understood vs what have you understood in his book and I think this is a crucial thinking point. The questions can often tell us what they have answered, but there is a chance that students have simply guessed, particularly where multiple choice is involved. One of my favourite activities, particularly at KS4 and KS5 is to ask students a series of MCQs and give them a score at the end without telling them which questions they answered correctly. Then I ask students to work in pairs or small groups to agree a final set of answers, with justification for these answers. This works particularly well with A Level groups. Only once groups have agreed final answers do we review as a class and address misunderstandings

Reviewing material (Principles 1 and 10)

Retrieval practice is a massive buzzword at the moment in the education world. The tools and strategies for completing retrieval practice can be transferred relatively easily between subjects in my view, but the work for departments here is the decisions around what topics must be featured in retrieval practice.

This goes back to one of my first points about the need for teams to identify the most important strands for student success. Once this is done, it is these topics that must be revisited regularly. My lessons always feature one of the following four starters:

  1. True/false statements that students have to answer (with reasoning). I find these great for the theoretical aspects of Computer Science – especially networking, computer systems and the wider impacts of computers.
  2. Display an algorithm in pseudocode or actual code and ask students to describe what it will do and the the techniques that are used.
  3. Multiple choice questions to check student understanding on previous content.
  4. Display keywords and a topic name. Students have to write down everything they know about the topic, making sure that they use the keywords.

For all of these starters, it is important that they are as low-stakes as possible. I rarely expect students to write these in their books. My experience is that students fear recording answers to retrieval practice, particularly if it has not been revisited recently so that their confidence is low. Using retrieval practice regularly, and low stakes has helped me to increase confidence in student understanding. The other important element is that retrieval practice, in my opinion, should regularly focus the important strands for success.

Stages of practice (Principles 5, 7 and 9)

In my experience of teaching, working with NQTs and trainees, practice is often one of the areas of Rosenshine’s principles that are missed the most in Computer Science. Delivering content and checking understanding are areas that teachers are in control of, but when you release students to complete tasks, the nature of the subject means that students can quickly end up in different directions.

One of the subject-specific areas where I believe this is most important is algorithms and practical programming, particularly when the teacher is not a programmer themselves! Over time, I have built up a bank of program scenarios, taken from places including exam questions and programming tasks. I use these regularly when teaching these topics as a starting point for asking students to write algorithms (pseudo-code or flowcharts!) and getting them written into coded solutions. When you have taught a particular skill, giving students the opportunity to apply this skill to a range of tasks really tests and pushes their understanding. This is important, but where it most often goes wrong in Computer Science is when the students go wrong! Identifying and helping up to 30 students fix individual errors, when there are multiple ways of achieving the same outcome is hard, and so I am a massive advocate of Rosenshine’s 5 principle – ‘guide student practice’. Practice in Computer Science should be built from lots of small, easy to build-upon programming scenarios that build confidence. The first should be modelled and explained, with potential misconceptions identified so that when students are released they can achieve high success. Supporting this with high quality getting unstuck resources and well practiced routines of questions that will help students solve their own errors is essential. Whenever a student asks for help on a programming task, they must first be able to answer the following three questions:

  1. What am I trying to achieve?
  2. What is the program currently achieving?
  3. Have you checked previous programs to see if you’ve used the same skill?

If students can’t learn to get themselves unstuck, or the practice tasks are too hard, then they will not feel successful in their learning and the practice won’t lead to sustained improvements. Students all have printed copies of the quick reference guide below in their folders, and we display students code on the wall focused on the desired output, not the technique being used (eg. validating user input as opposed to creating a while loop to check within a range).

Final thoughts…

I started by saying Rosenshine’s principles have always seemed relatively clear to me, and Sherrington’s work has reinforced these messages and added some classroom specific activities to put them into action, but I firmly believe that the primary focus for departments to think about, before they apply Rosenshine, or any other teaching strategies, is the question what am I teaching, and why? Until this can be answered, Rosenshine’s principles cannot be effectively applied. Only by identifying the precise content that is being taught, can we begin to effectively improve the explanation, modelling, deliberate practice, questioning and feedback that helps students improve.

I would urge departments to think about the following questions:

  • What is the most challenging knowledge that must be understood, and skills that must be mastered?
  • What are the blocks that allow these knowledge and skills to be learned?
  • What order allows the blocks to be sequenced in the best way for students to link these blocks together and build on them over time (for your students, your teachers and your context)?

Once that is clear, I believe Rosenshine’s principles just help to deliver that content in a way that is clear and coherent.

2 thoughts on “My thoughts on applying Rosenshine’s Principles to Computer Science

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s