Abstraction is certainly the key to computing, but mathematics is not the key to abstraction. Abstraction is all about ideas, finding the essence of something. The key to computing is figuring out what is really important in a incompletely understood situation and developing a conceptual framework that captures its essence.
Mathematics, especially as taught at the undergraduate level, has nothing to do with helping students get to the essence of something. Undergraduate mathematics is primarily taught as instruction in a foreign language. Students are required to learn specific, previously defined concepts, and they are required to learn a new and often opaque notation in which those concepts are expressed. As typically taught, undergraduate mathematics may provide students with powerful tools, but it has nothing to do with learning about the process of abstraction.
Even worse, mathematics is sometimes taught strictly as a formalism: if the symbols can be manipulated properly one doesn't really care what they mean.
A nice way to teach computer science students about mathematics as an abstraction process would be to teach it as analogous to software design patterns. Software design patterns give students useful ways to think about abstract aspects of software. Mathematics can be taught as useful ways to think about abstract aspects of problem spaces. If taught from that perspective, mathematics can help undergraduate computer science students develop their intuition about abstraction at the same time as they are mastering mathematical tools and concepts.
Friday, April 06, 2007
Mathematics and abstraction
This month's Communications of the ACM (CACM) has an article that asks (apparently rhetorically) whether abstraction is the key to computer science. It argues, of course, that it is. It also claims that mathematics is a good way to teach abstraction. Here's a letter I've sent in reply.