Our Approach to Teaching Block Programming in Years 1-6
Block coding is mainly taught using the Discovery Coding online platform across KS1 and KS2, to ensure that children use a consistent interface and language, through which they can easily develop and better their skills each year. They always work in the 'create' section - rather than using the on-screen tutorials - so that they can select, arrange and run the full range of coding blocks and design tools (filtered by year group) to their choosing, for full flexibility.
Lessons are sequenced from Years 1 to 6 to ensure their difficulty gradually increases as children learn more programming concepts and the functions of different command blocks over time. This is clearly outlined in the 'Computer Science - Programming' strand of both the Computing attainment expectations progression document and the knowledge organisers, which show the expected knowledge, skills and understanding children should know.
Elements of a Block Programming Unit
1. GUIDED PRACTISE Pupils copy and 'tweak' several programs described on custom-made instruction sheets of increasing complexity, with comments explaining the functions of the main programming events on them. These partially-completed programs contain several commands which are hidden to encourage their logical thinking regarding what should be included to make the programs complete. They are also encouraged to make cosmetic changes to the design or alter values in the code to personalise their work and observe the effect of any changes made. This partly-scaffolded approach helps pupils see new command blocks in action and reduces cognitive load, allowing the inclusion of all pupils to succeed in creating a working program, whilst still allowing for some individuality in the final outcomes produced.
2. ALGORITHM CHALLENGES Pupils are then given a description of further enhancements that could be made to their programs in each lesson, which they must then interpret and translate into code using their computational thinking skills. For example, this could be: adding additional levels, including a countdown timer variable or inserting 'baddies' avoid which make their games harder to play.
3. EXPLANATION DOCUMENTS Children are next challenged to type up a paragraph captioning screenshots of any work they produce (both the design and code tabs) to describe the purpose of their programs and explain their understanding of how key coding events happen in them. They are given sentence frames to support their writing and to prompt them to use the correct computing vocabulary (similar to the STEM sentences approach in Mathematics lessons).
4. INDPENDENT PROGRAMMING OPPORTUNITIES At the end of each year group's unit, children are given a age-specific set of 'programming skills' success criteria which they must self-assess themselves against as they independently design, code, test and evaluate a themed program on their own for others to play. This final assessment opportunity allows them to demonstrate how secure their current programming knowledge is and how well they are able to transfer this into combining command blocks together on their own for interesting final outcomes.
Resilience and Debugging
Children are encouraged to use their Parkfield value of RESILIENCE when feeling challenged doing their programming work and prompted to use their 5Bs before asking for adult support. This could be: using logical thinking to determine which commands are best to solve a problem, deciding which is the most efficient way to combine commands together (e.g. using repetition), tweaking components (e.g. design elements or values in code to make a game easier/harder to complete) or attempting to fix mistakes so code runs how it should. To ensure that all children learn and practice debugging, every programming lesson includes a pre-prepared extract of code which pupils are asked to identify errors in and explain (to their partner or to the whole class) how it could be fixed.
Expectations of Pupils' Block Programming Journeys
Through yearly repeated practise of following this cycle of increasingly complex block coding encounters over about ten of the Computing lessons each year, along with completing an online, low-stakes retrieval quiz at the start of each lesson, our pupils develop a strong and secure knowledge of common programming procedures and methods which they then begin to use automatically/fluently over time. This reduces their cognitive load and allows them to engage successfully in complex tasks and become programming 'experts'.
The final programming projects in Year 6 offer pupils the chance to both 'show-off' and extend their taught knowledge and skills:
Firstly, they are asked to create a program for an imaginary, specific audience using as many different design elements and command blocks as possible to demonstrate their programming capability. This is followed up by them completing a full write-up of their work over several slides in a presentation, explaining how they followed the different parts of the Computing systems lifecycle. This is similar to the expectations of secondary school pupils, in readiness for their transition and future learning.
Secondly, they are challenged to create several mini online, fun games in the style of summer fair stalls, simply being given algorithm descriptions and simple design sketches allowing them to experience using some of the more unusual, lesser-used command blocks.