Computer programming is something that you have to do for a long time to be good at. Almost all good programmers started well before college, and a lot of them go on to study something other than CS. My BS is in Electrical Engineering, and I have an MS in Math, yet I still consider myself a desirable candidate for programming jobs.
Back in my day I didn't know CS was it's own major; I thought it was just a subset of EE and programming was just one thing you had to know, in addition to being actually able to build a computer from scratch.
Math should also be very self-teachable. Though it takes a lot of discipline or (better) passion.
Almost all ground-breaking mathematics was done at a very young age.
I never figured out how to look at a resume and meaningfully select for extremely good hackers who were within our ability to attract (although it was easy to identify them in interviews). The ones for whom that was obvious from their resume had better opportunities.
One thing that I find interesting about this conversation is how much more often it comes up in software than elsewhere. Why are there so many autodidact hackers out there? I think it might be that computers are such excellent, affordable learning environments. The quick feedback loop you can get actually working with a computer is unlike anything available for most fields.
On the other side, academic CS programs are relatively new, and possibly don't do such a great job yet. Or maybe it's just that they've been attracting large numbers of the wrong people in recent years.