This is good stuff, and very well-regarded by my colleagues.
Depending on the age of your kids, https://automatetheboringstuff.com/ or another of Al's books are quite good to start with and free to read.
For younger kids, Code.org's "Hour of Code" stuff uses Scratch, which is a nice block-based visual programming language that's still a real enough language under the hood; I had co-workers who used Scratch to have their AP CS students sorting lists of numbers and other "real" algorithmic tasks.
And I'd be remiss if I didn't mention the book I wrote, which is linked in my bio.
The at home resources are here: https://csunplugged.org/en/at-home/
Not this program specifically, but in high school I was taught Pascal without touching the computer for the first couple of months. All of our programs had to be written by hand. And included traces of the code ... all the values of the variables throughout the lifetime of the program. I was disappointed at the time, but looking back, it was a great way to write code. It was more about the meaning of the code, not fighting compiler errors.
Edit: this would have been 1993, when I was in 9th grade.
That's exactly how I felt and feel about a similar experience I had learning Scheme
One suggestion I might have is, depending on their age, doing combinatorial game theory with them. That sounds really hard and fancy, but it's not (at least at the introductory level). There's a lot of games that are really simple to describe (e.g. counting games, simple board games) and your goal is to figure out the smartest move and / or if the player who starts the game can win.
My daughter's 10th grade programming teacher (<3 you, Mister Serota) had a pretty brilliant mechanic for teaching functions to kids in his class that he relayed to me, and which I will attempt to relay to you.
Effectively, he simply assigned some of the children in class to be 'a function.' Whatever input he gave them, they would have a predetermined routine to execute and give him output. E.g., "Billy, your function adds 2 to whatever input is given. Barbara, your function is to divide everything by 2. Samantha, your function is to determine whether or not dividing something by 2 will leave a remainder (modulo)."
Then he would work complex computations through the room with scripts he'd devised, showing the power of chaining functions together. Similarly, if you give Billy the "+2" function, and then give him an input value of "A", well, he might come back with "C" as the output, or he might come back with puzzlement, and you can teach error handling. Similarly, you can assign multiple kids the same functions (and show asynchrony, or hand them different bad values to show the possibility of inconsistent code).
TLDR: You "program" the children to be functions, feed them data, and then play around with how to best illustrate the concepts by manipulating the inputs and how you string them together.