Mitchell left of a comment referring to an article on mathematics and abstraction. It makes the case that mathematics is all about abstraction, but we don't teach it that way. (I more or less said that we don't teach mathematics as abstraction also. So we aren't that far apart.) This is definitely a nice article, and I like its emphasis on mathematics as abstraction.
There does seem to be a difference, though. Computer science artifacts, i.e., software, are grounded in executability. From that grounding, one can factor and abstract elements to one's heart content and be sure, as long as one has done it correctly, that the result will be not only executable but more powerful and more elegant.
In mathematics, where is the grounding? The article uses numbers as an example of abstracting the notion of size.
No matter what collection you consider, abstract or concrete, it has a number that describes its size; no matter what type of objects your collections are made up of, the results of arithmetic operations will always describe the resulting collection accurately. Thus the simple statement that 2 + 3 = 5 is a statement that describes the behaviour of every possible collection of 2 objects, and every possible collection of 3 objects.That's all well and good. It's a nice illustration of the mathematical notion of number as an abstraction. But is the step of going from the intuitive notion of the size of a collection to the mathematical notion of number mathematics, or is mathematics the step of formalizing this new notion of number and proving theorems about it? In my experience, mathematics has always been about the latter, i.e., proving theorems about existing abstractions. The actual process of coming up with the abstraction about which theorems should be proved is considered somehow pre-mathematics.
I think that the reason for that is the lack of groundedness in the abstracting process. Computer science is extremely fortunate that its artifacts are grounded in executability. Mathematics does not have that advantage. So mathematics can operate as mathematics only on already abstracted elements. By that time, the joy of abstraction has been lost, and one is stuck proving theorems about someone else's abstractions.
Of course good mathematicians make their own abstractions and then prove theorems about them. That's hard to do. And simply creating abstractions without proving theorems about them is not considered mathematics. One gets no mathematical credit for the abstraction step on its own. (Try to publish a paper that doesn't have any theorems in a mathematics journal.) So I'm still not convinced that mathematics as it is taught and practiced helps computer science students with the process of abstraction.