I'm at a "decent" university and currently in my 3xx level classes people don't know how to "do coding" and I'm constantly having to help people learn some material that, had they taken the time to program on their own, they'd know. There is value to a degree but it's not in knowing how to do your skill. The value comes from 1) having a degree, 2) knowing people who have degrees, 3) being able to talk the lingo to people who respect degrees.
Now granted, 6.001 is great and I love SICP but I don't know if you can show me data of people who know absolutly nothing about computers/electronics going into those courses and being able to "do electronics" or "do computers" after getting out. I'd wager that the data will show there's a higher corilation of people who come in knowing something about computers or electronics from their own experiance who are able to get more out of the classes.
Sadly I don't think universites publish this data (would probably be bad press for them).
I'd love to be proven wrong though. It would remove another large chunk of my cynical world view.
The vast trove of empical data out there on activities like programming suggest that practice is main way people get better. There's also a sizeable anount of evidence saying ideal practice is a series of problems that increase in difficulty, a bit harder than before, and not insurmountable. Plus, learning techniques & observing examples from experienced professionals.
College isn't likely to teach you much programming skill at all. Now, programming practice + a college education in CompSci concepts can make for a programmer with more tools in the toolbox (taps head). It's not a substitute for repeated, informed practice of act itself.
I think I'm done contributing to this site. Thank you for showing me the light.