My son received Code Masters for his birthday last year. The game states it is for 8 years and older, but we busted it out this year. It is a single player game which requires you to visualize and prepare logic into movements on the game board. The game is fairly easy to setup, and my son has been able to set up the game on his own, only needing me when he gets stuck.
The game comes with a map booklet, a "guide scroll", an avatar and portal, gems, and then condition and action tokens.
The map lays out your obstacles and possible paths of movement. The guide scroll determines how many actions and conditions you may use. The goal is to use the proper combination of actions and conditions to move your avatar to the portal. If the map contains gems, you must also pick those up along the way.
It's simple, yet challenging. There are 60 levels across the 10 maps, leaving it to be pretty challenging over time. The best part is, it relates to some STEM projects they have done in school, where different colored markers make a robot perform different actions on a track.
The best part of the game, however, is teaching my son how to debug. Understandably, there have been a lot of yells "dad, I need help!" I let him squirm for a bit because he figures it out. Then I come and help him debug the problem.
First, I'll have him talk me through what he has tried so that I understand where we can start. Usually, he finds the missing piece and gets that "ah ha!" moment only a session of Rubber Ducking can do. The best form of debugging will always be Rubber Duck Debugging: https://rubberduckdebugging.com/
If that does not work, we run through his actions to see where they break. One by one we step back in his action sequence and evaluate where things went wrong. We then make a new attempt and try it again.
I really enjoy this process as it lets me show my son: "Look, I make mistakes all day. Everyday. A lot of times I leave work with nothing working. But this is how I solve problems." It shows him making mistakes are okay and that it takes time to get things right. I don't care if he grows up to be a software engineer. But I do hope he gains confidence and general troubleshooting skills, as those transcend any career choice.