Professional Documents
Culture Documents
Introduction
The community of computer science has developed several
methods for improving the development and presentation
of computer programs. As it turns out, this practice of
presentation is not a tradition in the mathematics
community. The style by which mathematical ideas are
presented is usually formal and thrifty. For example,
proofs are usually presented in a perfect manner, in full
detail. Thus, it is not always clear to the reader what the
structure of a proof is and what the role of each of the
details appearing in it is. Of course, there are many cases
in which instructors do improve the traditional method of
presenting mathematics. However, these are individual
attempts and do not represent the official mathematical
culture.
Needless to say that the mathematicians
themselves are aware of the disadvantages in presenting
mathematical ideas in this way (Steenrod, 1973; Halmos,
1973). However, at the same time, the number of papers
which deal with methods for improving the presentation of
mathematical ideas, is relatively small.
Many discussions focus on connections between
mathematics and computer science in general, as well as on
analogies between mathematical proofs and computer
programs in particular (Dijkastra, 1972, 1986; Knuth, 1974;
De Millo, Lipton and Perlis, 1979; Martin-Lof, 1985;
Hoare, 1986; Gray, 1991; Wells, 1995). Based on the
analogy between computer programs and mathematical
38
Reviewed Papers
that prevent one from moving ahead. But, conceiving a
development task as a process which is based on
improvements and refinements of the product we are
developing, puts a different light on situations in which
problems arise.
2. Abstraction
Abstraction is applied in mathematics and in computer
science similarly in at least two ways. First, in both fields
abstraction is expressed through a description of objects by
their characteristics rather than by the way they are
constructed or how they work. Second, abstraction is
applied in the two fields by retaining what objects in a
given set have in common while ignoring their differences
as much as possible.
The continuation of this section illustrates the
application of an additional computer science interpretation
of abstraction to the presentation of mathematical
theorems. Specifically, it is examined how computer
science may contribute to mathematical presentations by
setting up abstraction barriers. Abelson & Sussman (1986)
use the metaphor of abstraction barriers to present one of
the methods aiding in the development of computer
programs (p. 73). Abstraction barriers separate between
the assignment of meaningful names to instructions used in
a computer program, and the definition of these instructions
in the programming language. When we develop a
computer program, we choose a language that describes the
solution to the problem in a human language. In this
process, we set up a barrier that prevents us from going into
technical details arising from the use of a programming
language. In other words, above the abstraction barrier, we
describe a solution to a problem by a collection of words
that are meaningful for us. Below the abstraction barrier,
we define these words by means provided for us through
the programming language. In practice, several abstraction
barriers are set up in the development of complex computer
programs. That is, the same idea is applied in the process
of defining each of the words that describe the solution in
earlier stages.
The application of abstraction by setting up abstraction
barriers is expressed in the mathematical context for
presenting the following theorem about real and rational
numbers.
For every irrational number and for all real number
> 0, there are two rational numbers r1, r2 which satisfy
r1 < < r2 and r2-r1 < . (Mizler, 1968).
In what follows, the theorem is introduced by a sequence of
descriptions.
First formulation
There is an irrational number between every two different
rational numbers. This fact is intuitive and leads us to the
next stage, which uses the term rational segment a
section on the real axis whose edges are rational numbers.
This is an example of choosing an appropriate terminology
39
Reviewed Papers
Two proofs for this theorem are presented. The first one is
presented in the traditional way of presenting mathematical
proofs; in the second proof, the theorem is reformulated as
a programming problem whose solution is based on
constructing an algorithm that consists of a While Loop.
A1
A2
B2
B1
A1
B2
A2
B1
40
Reviewed Papers
Pedagogical implications of program correctness
As can be observed, both proofs are based on the same
object (that is, the sum of the segment lengths).
However, while in the second proof, in which the algorithm
is constructed, the variant function on the set of situations
the sum of the segment lengths is built as an integral
part of the proof, in the first proof the object on which the
proof leans the pairing with the minimum sum of the
segment lengths is pulled out of the hat at the beginning
of the proof. This is what Avital (1973) describes as the
Let us define a function Syndrome. This syndrome
refers to the phenomenon that sophisticated objects are
introduced in a certain stage of proving a theorem without
any preparation. For a mature mathematician it is obvious
that this object emerged from some examination; for
novices, it may be seen as a magic that not everyone is
capable of carrying out. As has been mentioned before,
showing students the true process by which a task is solved,
is an important part of problem-solving education.
4. Epilogue
This paper focuses on the following three methodologies of
computer science stepwise refinement, abstraction and
program verification.
It illustrates how these
methodologies may be helpful in the presentation of
mathematical theorems and proofs. What is argued is that
in the same way that these methodologies help improving
the presentation of computer programs, they may improve
the presentation of mathematical ideas.
Structured
programming is an additional computer science
methodology that may be used in the presentation of
mathematical proofs (Cf. Leron, 1983, 1985).
Acknowledgement
I would like express my gratitude to Uri Leron and to Rina
Zazkis for their useful and thoughtful remarks on an earlier
draft of this paper.
References
[1] Abelson, H. and Sussman, G. J. (1986). Structure and Interpretation of Computer Programs, MIT Press and McGraw-Hill.
[2] Avital, S. M. (1973). The Let us define a function syndrome. International Journal of Mathematics Education in Science and
Technology 4, pp. 143-147.
[3] De Millo, R. A., Lipton, R. J. and Perlis, A. J. (1979). Social processes and proofs of theorems and programs. Communications of the
ACM 22(5), pp. 271-280.
[4] Dijkstra, E. W. (1972). Notes on structured programming. In Dahl, O. J., Hoare, C. A. R. and Dijkstra, E. W. (eds.). Structured
Programming, Academic Press, New-York.
[5] Dijkstra, E.W. (1986). On a cultural gap. The Mathematical Intelligencer 8(1), pp. 48-52.
[6] Dijkstra, E.W. (1989). A somewhat open letter to Uri Leron EWD1049. Unpublished personal correspondence.
[7] Gray, R. (1991). Computer Programs and Mathematical Proofs. The Mathematical Intelligencer 13(4), pp. 45-48.
[8] Gries, D. (1981). The Science of Programming, Springer-Verlag, New-York, Inc.
[9] Halmos, P. R. (1973). How to write mathematics. In Steenrod, N. E., Halmos, P. R., Schiffer, M. M. and Dieudonne, J. A. How to
Write Mathematics?, American Mathematical Society.
[10] Hoare, C. A. R. (1986). Mathematics of programming. Byte, August , pp. 115-124, 148-150.
[11] Honsberger, R. (1985). Mathematical Games III. The Mathematical Association of America.
[12] Knuth, D. E. (1974). Computer science and its relation to mathematics. The American Mathematical Monthly, 81 (April), pp. 323-343.
[13] Lakatos, I. (1976). Proofs and Refutations. Cambridge: Cambridge University Press.
[14] Leron, U. (1983). Structuring mathematical proofs. American Mathematical Monthly, 90(3), pp. 174-185.
41
Reviewed Papers
[15] Leron, U. (1985). Heuristic presentations: The role of structuring. For the Learning of Mathematics 5(3), pp. 7-13.
[16] Martin-Lof, P. (1985). Constructive mathematics and computer programming. In Hoare, C. A. R. and Shepherdson (eds.).
Mathematical Logic and Programming Languages, Prentice-Hall International.
[17] Mizler, D. (1968). Calculus, Haomanim Press, Jerusalem. (Hebrew).
[18] Steenrod, N. E. (1973). How to write mathematics. In Steenrod, N. E., Halmos, P. R., Schiffer, M. M. and Dieudonne, J. A. How to
Write Mathematics?, American Mathematical Society.
[19] Wells, C. (1995). Communicating mathematics: Useful ideas from computer science. The American Mathematical Monthly 102(5),
pp. 397-408.
[20] Wirth, N. (1971). Program development by stepwise refinement. Communications of the ACM 14(4), pp. 221-227.
Endnote
(1) A flip is a change that is made by moving from Figure 1 to Figure 2 which deletes an intersection in a pairing.
CITIDEL
Computing and Information Technology
Interactive Digital Educational Library
<www.citidel.org>
42