I love finding innovative ways to teach important STEM concepts. As much as I love electronics and everything you can do with it, even I understand that learning about Norton-Thévenin equivalents and pole plots can sometimes be quite dry. As much fun as programming can be, learning about loop invariants, order-of-operations, and the various types of data structures can be rather dull if not presented well.
Computational Fairy Tales, by Jeremy Kubica, is a really cool concept (teach the fundamentals of computer science by making the relevant concepts into fairy-tale plot devices) — and equally importantly, well-executed. Abstract concepts like functions, constants, and linked lists become much more memorable when told in the context of an adventure story or anecdote. Some of the stories, like the time the guards at the north gate learned the difference between assignment and equivalence ( = vs ==), are a hoot.