first to make an electromagnet based combination tryer is a boss - there are a lot of combinations though but differences in resistance when you get one bit bit in place may be the key to decoding
an interesting functional programming language is OpenSCAD
he may enjoy making onscreen objects and optionally 3D printing them, at the same time learning some of the basics of functional programming