Friday, April 20, 2007

Computer science, mathematics, and abstraction

In a recent blog piece, I argued that mathematics is not particularly effective at teaching abstraction. That piece was in response to Jeff Kramer's April CACM article, "Is Abstraction the Key to Computing". Jeff replied as follows.
We do have anecdotal evidence that those students that have good mathematical skills and have been though our discrete mathematics courses are better equipped to perform formal modelling. This tallies with my intuition that manipulation of mathematical symbols is analogous to manipulating abstractions.

However, as mentioned in my article, students still find it difficult to select the abstractions themselves, i.e., that they still need to learn the process of selection and removal of detail which is an essential skill. Perhaps this is because most mathematics courses present the students with the abstractions rather than requiring them to select it for themselves!

Hence, my feeling is that although it may be that mathematics is not the key to abstraction, it is helpful and could be improved to include more use of abstraction skills.
Yes I agree. The problem is that when one learns mathematics one is taught to deal with abstractions that have been created by someone else. One is not taught the process of creating abstractions.

Regarding students with good mathematical skills, my guess is that good mathematical skills correlates to some reasonable extent with the ability to abstract but that learning additional mathematics does not improve one's ability to abstract as much as learning more computer science.

In fact I suspect that students who spend their time learning additional computer science improve their ability to abstract more than students who spend the same amount of time learning additional mathematics — the marginal value of computer science for abstraction is greater than that of mathematics. That would be interesting to design an experiment to test that hypothesis.

I would go even further and hypothesize that learning more computer science enhances one's ability to abstract more than the same amount of time spent learning any other discipline — that the marginal value of computer science for abstraction is greater than that of any other discipline. Any takers?

No comments: