Teaching programming begins with understanding sequence and that simple algorithms produce the same outcome every time it is run. Kidbots and Beebots supports students to understand that a simple algorithm using directional instructions will always produce the same outcome when they start at the same point and have a destination to go to.
Simple debugging and embracing that debugging is part and parcel of creating a program start with a programmer debugging their code with kidbots. Students work in threes, with a programmer, a tester and a BOT. The programmer writes the program using arrows or any other agreed program language (it could be F = Forward, R = Right, L = Left). The tester takes the program and calls out each step to the BOT. If there is a bug, the tester underlines where the bug is and let's the programmer know there is a bug at that point. Repeat this until the BOT reaches the expected location. Sometimes this may take 3 or 4 attempts and that is what we celebrate, that bugs don't get fixed on the first attempt! A good programmer is a programmer that keeps trying until it is solved.
This same approach works for Beebots as well.
Teaching programming is about giving students the choice of what they create while learning to program. They can have the choice of the programming language that they learn in as well. We recommend ScratchJr, Scratch - a block based programming language (which as Professor Tim Bell describes it - is like having your first bike with streamers and spoke beads and perhaps trainer wheels). Scratch is a full Turing Complete programming language, which over time will feel restrictive for students who are ready to move onto text based programming. We recommend Python as this is used both in industry and education. There are many block based and text based languages to explore, we recommend Scratch and Python because of the breadth of global use and the community support available.