Use group discussion to help students figure out boundary cases for removing duplicate adjacent elements on their own so that they get to discuss a variety of test cases in depth before focusing on the code.
Create boolean variables to use as the condition when introducing if statement to highlight for students that the condition is any expression that evaluates to true or false.
Have students code boundary condition test to handle removing adjacent duplicates to help them better understand data structures and become familiar with common bugs through practice.
Step through an accumulator pattern on board to make clear how variables change within a while loop to help students understand this confusing topic.
Use scoreboards to motivate the use of variables because young students have developed strong mental models for scoreboards through previous exposure allowing them to quickly understand what variables are.
Ask students “What were you trying to do?” when they ask for help to help answer their own questions because they may already have the skills to debug their own Scratch programs.
Train students to draw pictures of code traces through namespaces, objects and function calls because the benefits of drawing these processes helps them avoid common mistakes.
Reinforce that certain types in Python such as lists are mutable while others (e.g. strings, tuples) are not. Students have difficulty tracing code that uses mutable types because they often forget this.
Mention to students that individual blocks in Scratch and Snap can be tested by double clicking them in the block library so they know this useful, non-intuitive trick for learning what an individual block does.
Scaffold students through reverse engineering existing Scratch projects to help them gain competency in important concepts like message passing, variables, and event-based programming.