Think about Loose Coupling  
PerlMonks 
Re: Programming & real lifeby tilly (Archbishop) 
on Dec 31, 2003 at 03:51 UTC ( #317821=note: print w/ replies, xml )  Need Help?? 
Useful context: I wrote Re: (OT) Should math (or adv. math) be required in CIS degrees? and I have a strong mathematics background. My considered opinion is that mathematics and science as they are currently taught do virtually nothing to help the average person learn to think more clearly. Instead they teach people how to apply poorly comprehended formulas by rote because that is how authority said to do it, and you will get good marks on the test. If correctly taught, either subject could go a long way towards teaching these basic mental skills. The essense of what I consider correct teaching of each includes a clear understanding of the reasoning process, and a gutlevel understanding of how science and math evolve as natural extensions of normal human methods of comprehending the world around us. Only if you capture that connection (which today is only captured by accident) is the significant insight possible. Note that abstracting everything amazingly far, right away like your dad suggests, is not something that I advocate. Quite the contrary, the New Math experiment of trying to do that with everyone was quite the failure. A lot of that failure was because the teachers who were asked to implement it didn't understand what they were supposed to teach. (Always a recipe for disaster.) But I believe that much of it is because a capacity for abstraction is learned and developed, you cannot start people off with expecting them to behave ideally. People don't work that way. (This may have been a problem with your dad tutoring you  if so then he would not be the first mathematician that I know who had problems explaining math to his own kids on this account.) Likewise programming has the same potential. For the same reasons. I also doubt that it would work in the real world for the same reasons. After all if teachers who do not understand programming were asked to teach kids who are uninterested in programming to program, what would happen? Well both teachers and kids would be likely to be performing actions by rote. With pressure on the teachers to give the kids results that they can see. Very quickly the entire exercise would reduce to teachers showing kids how to plug answers into a wizard that would write the program. Neither teacher nor students would understand what the wizard did, and neither would have a clue how to proceed with any situation that the wizard did not provice a precanned answer for. What lessons about how to think for yourself would you expect to be passed along? For further thought, a dated but insightful critique of the "new math" movement is Why Johnny Can't Add. It is still worth reading for anyone who believes that it is appropriate to teach mathematics by first teaching excessive abstraction. By contrast anyone who wants to learn to appreciate mathematics is highly encouraged to pick up, The Mathematical Experience. It may not make geometry any more fun for you, but it may help you understand your father's love of mathematics. And finally a tip to all of you collegebound highschool students. If given the choice between taking a highschool Calculus course and taking more algebra and geometry, I strongly suggest that you take more algebra and geometry. The US school system horribly shortchanges you when it comes to basic mathematics. Sure, you can learn by rote the manipulations that get the right answers on a Calculus test. But you won't understand the subject without a better understanding of the basics. And if you fail to place out of Calculus in college, having been through (and failed to understand) Calculus in highschool is worse preparation than having a solid background in algebra and basic trigonometry. (Particularly when you get to Calculus II and have to do complex substitutions.)
In Section
Meditations

