Computer Science--a literacy, numeracy or something else?

When you introduce computer science to potential students, do you tell them it's like learning a new language? Or do you tell them it's like solving a logic puzzle? 

I tend to do a little of both.

I tell students that the reason I love CS is because I love puzzles. Jigsaw, logic, crossword, Boggle, riddles and brainteasers--all of them! Symbolic Logic was even one of my favorite college courses (as an English major). I tell potential students that if they love solving puzzles then CS is for them!

I use the literacy metaphor to help students over the initial learning curve. I tell that that just like they need to conjugate verbs in Spanish following standard patterns and charts, they need to learn standard code patterns and survive the awkwardness before coding will feel intuitive and easy.

But this recent study from MIT found that coding is neither quite like language learning or mathematical problem solving. Researchers found that it uses both parts of the brain in a more unique way! 

Maybe this doesn't help me to "sell the class" or create buy-in for studying among beginner students, but I think it can help me to empathize and provide students with a word of scientifically based comfort when they're frustrated or overwhelmed by CS. By coding, they're challenging their brains in ways not normally expected in other subjects. They're growing not just content knowledge but new brain patterns. Of course this could be a little overwhelming!

So maybe my new metaphor for learning to code will be to think of physical training for athletes. The first time they try an exercise, I'm sure it feels awkward or tiring or (if pushed too much) painful. But with intentional practice, grit, and time, they develop and grow. Eventually the work will seem routine and easy, and they'll have to find a new way to exercise their brains beyond my class...