From mboxrd@z Thu Jan 1 00:00:00 1970 Message-Id: <200202052229.RAA24009@math.psu.edu> To: 9fans@cse.psu.edu Subject: Re: [9fans] code complexity In-Reply-To: Your message of "Tue, 05 Feb 2002 11:34:51 EST." <37088672ac32055400db1684d3dfae65@plan9.bell-labs.com> From: Dan Cross Date: Tue, 5 Feb 2002 17:28:56 -0500 Topicbox-Message-UUID: 4cf2e3a0-eaca-11e9-9e20-41e7f4b1d025 > [...] I helped to teach an > introductory computer science theory course for three years, > and we had the same problems there. Students didn't > see any point to distilling a correct yet awkward proof > down to its essence; after all, it was correct, wasn't it? > (I don't know if this was natural or they got it from > taking intro to programming the year before.) > Even so, we didn't give much opportunity to help > them rewrite their proofs. We did hand out the best > most elegant proofs we had on the solution sets, > and I think that helped somewhat, but I'm still not > sure how many internalized the message. Hmm, interesting. Programming is more or less isomorphic to mathematics in this respect, as you point out; it's all about generalization and abstraction, but too often individuals fail to perceive the value of either. I think that the problems students encounter in both come from the same place; essentially a fear of math and math-related subjects. People don't want to understand *how* something works, they just want to see *what* to do with it. A large part of that comes from the public school system (at least, this is true in the USA). People get so convinced so early on that math is something that they can't get their heads around because they're `taught' by people who are inept and don't have their heads around math to start with and teach it the wrong way. The self-defeating idea that ``I can't do it'' follows a person, and perpetuates itself through higher education. The result is that students don't understand what's behind the symbols in math, and just memorize equations and theorems to pass the tests. They might have some understanding of how the numbers and symbols fit together, but they're still eluded by the higher mathematical ``truth,'' and even worse, they don't think of themselves as capable of understanding it. When they get out of school they collectively breath a sigh of relief and say, ``Ahh, I never have to care about that ever again.'' When something math related comes up later on, they mostly go into dummy mode and just slog through it, all the while beset my flashbacks to less happy days in which they were forced to slog through similar, seemingly incomprehensible equations and so on to get a decent grade. This is especially true amongst scientists and engineers. For instance, does anyone really know *why* the result of the cross-product is called a pseudovector? Hmm, perhaps present company should be excluded from my sweeping generalizations, but you get the picture. Anyway, back to programming; it's just too close to math for a lot of people. Probably because, in a sense, it is math. But again, it's something they feel very despondent about, and don't want to get into other than at a superficial level. Anyway, this post is much too long and rambling. The point is that the average programmer doesn't see elegance or generality as something to strive for, because he or she hasn't seen that as something useful since the age of 5. - Dan C.