Computer Science isn't all about programming, but in the end we need to write programs to make useful things happen on computers. CS Unplugged is a great way to engage with the ideas that help people write great programs, but it's good to link the ideas with the skill of actually programming. The “Plugging it in" material provides one way to achieve this by giving challenges for students to automate some of the Unplugged activities by programming them. The challenges are at a variety of levels, so that there's something suitable for beginners and more advanced students alike.
There's growing evidence that mixing unplugged activities with programming can help students to understand programming better without taking more time to learn. There are a few ways to achieve this, and people have had success with various approaches. You could spend some time (perhaps a few lessons) on unplugged activities, and then have a few lessons on programming that build on the activities. Another option is to alternate unplugged activities with programming, where an activity is followed by a programming challenge that relates directly to it. Mixing time off the computer with programming seems to work better than just getting straight onto the computer and starting to code. This may be because the students have fully understood the requirements of the program they are about to write, and have experienced the process themselves.
The “Plugging it in" activities don't aim to teach programming (coding), but assume this has been learned through one of the many approaches available (such as websites and textbooks). Once students have learned a programming concept (such as variables or loops), you could get them to implement a “Plugging it in" activity that uses that concept.
By writing such programs, students are effectively “teaching the computer" how the concept works, which reinforces their understanding of the concept. Also, because they have done the exercise unplugged, they will have thought through what the algorithm is, and they know what the correct outcome is. For example, if they have understood the parity magic trick, they can implement a program that counts the number of black cards and checks for an odd number. The program is working correctly if it finds the correct flipped card! Furthermore, in principle they have now implemented a program that is similar to what happens all the time on computers to control errors.
The current “Plugging it in" challenges are designed for students who have some experience with Scratch, Blockly, or Python 3 programming, although the exercises could easily be adapted to other languages. Students can access the exercises through the “Plugging it in" section in the home page. There are a variety of levels of difficulty for the challenges, ranging from little more than the equivalent of a “Hello world" program, to requiring the use of lists and nested loops. It's important for you to assign exercises that are suitable for each student's level of confidence; they aren't intended to teach students how to program, but to use their skills at an appropriate level. These exercises are ideally completed following physically doing an unplugged exercise, and discussing the ideas that it has brought up.
The "Block-based" and Python exercises have a testing system built into the website, so students can create their program, run it, and get feedback on whether it met the requirements of the challenge. Note that although the requirements are fairly simple (such as displaying a number), every detail is important in the test; one stray full stop or space character can have the submission shown as incorrect. This may seem very pedantic, but it's a good discipline for programmers to achieve exactly what is asked for; one missing character from a section of a large software system might cause major problems in another section!
Of course, students don't need to use our tests; the challenges can be used simply as a springboard for their own programming, and they may prefer to experiment as part of their learning.