School
arithmetic is a subject which all educated persons have learnt in their
childhood and adolescence, and none can claim to be incapable of carrying out
such ordinary arithmetical calculations as are necessary for handling money.
The simple applications of the first four rules, the factoring of integers, the
calculation of the greatest common divisors and least common multiples of pairs
of integers, the extraction of the square roots of integers, and such other
exercises in arithmetic are not so difficult to most people as are algebra,
trigonometry and calculus. Arithmetic thus constitutes a common stock of
knowledge shared by all who have had a high school education.
From the 1990s onwards it has become necessary for students of engineering and technology to learn the rudiments of computer programming. I have noticed that the problems which such students are asked to solve by writing programmes and running them are seldom drawn from school arithmetic. Usually they are problems drawn from business or scientific applications, specifically for programming, and involve circumstances in which all students cannot be expected to be interested. I feel that if the well-known problems of school arithmetic, such as those mentioned above, are chosen as elementary exercises in programming, comprehension can be easy because of the prior acquaintance with the manual methods of solving them. Finding the greatest common divisor of two integers by using the Euclidean algorithm is sometimes assigned as a programming exercise, but other arithmetical problems seldom are.
The concept of a prime number is learnt early in school. The simple exercise of finding all the prime numbers up to, say, 100, by writing a programme is one which can be more instructive and easily comprehensible than a commercial or lexicographical problem of which the student has no prior knowledge. An essential necessity in programming education is the acquisition of the ability to solve by programming problems whose solutions have been well-known to the students from childhood or teenage onwards.
I ask you, dear reader, to recall from your school education the method of finding the square root of a square integer. (Example: 36864=192^2). One has to put bars on every pair of consecutive digits starting from the right....and so on. If you have forgotten it partially or completely, I request you to look into any reliable textbook of arithmetic to brush up your knowledge of it. In school, we are taught merely the working rule for solving this problem, which may be described as "Do this, do that". Why the rule works remain unknown to us. If you assign yourself the task of writing a programme for solving this problem, you will find that you have to look back at it long and hard from the algorithmic perspective, and will realize, through your efforts to find the details of the requisite algorithm, that in school your comprehension of the problem was perhaps somewhat mechanical and superficial. In endeavouring to write a program to solve this problem, your previous learning of the method will have to be reconsidered, deepened and completed in the algorithmic context of programming. If your algorithmic encounter with computers is thus based on known computational problems, your education in programming will become a continuation of your school education in arithmetic, whose memory traces are deeply entrenched in your mind.
Exercises easier than the one described above are finding the sum of the first n positive integers (which may involve using loops) and factorizing an integer into its prime factors. It must be realized that much of our arithmetical education in school was, unbeknownst to us, a rudimentary education in algorithms for computation, applied manually rather than electronically. The later education in programming should ideally be an extension and deepening of the earlier experience by the interaction with the computer, rather than a completely new enterprise unrelated to the stock of knowledge already acquired in school.
From the 1990s onwards it has become necessary for students of engineering and technology to learn the rudiments of computer programming. I have noticed that the problems which such students are asked to solve by writing programmes and running them are seldom drawn from school arithmetic. Usually they are problems drawn from business or scientific applications, specifically for programming, and involve circumstances in which all students cannot be expected to be interested. I feel that if the well-known problems of school arithmetic, such as those mentioned above, are chosen as elementary exercises in programming, comprehension can be easy because of the prior acquaintance with the manual methods of solving them. Finding the greatest common divisor of two integers by using the Euclidean algorithm is sometimes assigned as a programming exercise, but other arithmetical problems seldom are.
The concept of a prime number is learnt early in school. The simple exercise of finding all the prime numbers up to, say, 100, by writing a programme is one which can be more instructive and easily comprehensible than a commercial or lexicographical problem of which the student has no prior knowledge. An essential necessity in programming education is the acquisition of the ability to solve by programming problems whose solutions have been well-known to the students from childhood or teenage onwards.
I ask you, dear reader, to recall from your school education the method of finding the square root of a square integer. (Example: 36864=192^2). One has to put bars on every pair of consecutive digits starting from the right....and so on. If you have forgotten it partially or completely, I request you to look into any reliable textbook of arithmetic to brush up your knowledge of it. In school, we are taught merely the working rule for solving this problem, which may be described as "Do this, do that". Why the rule works remain unknown to us. If you assign yourself the task of writing a programme for solving this problem, you will find that you have to look back at it long and hard from the algorithmic perspective, and will realize, through your efforts to find the details of the requisite algorithm, that in school your comprehension of the problem was perhaps somewhat mechanical and superficial. In endeavouring to write a program to solve this problem, your previous learning of the method will have to be reconsidered, deepened and completed in the algorithmic context of programming. If your algorithmic encounter with computers is thus based on known computational problems, your education in programming will become a continuation of your school education in arithmetic, whose memory traces are deeply entrenched in your mind.
Exercises easier than the one described above are finding the sum of the first n positive integers (which may involve using loops) and factorizing an integer into its prime factors. It must be realized that much of our arithmetical education in school was, unbeknownst to us, a rudimentary education in algorithms for computation, applied manually rather than electronically. The later education in programming should ideally be an extension and deepening of the earlier experience by the interaction with the computer, rather than a completely new enterprise unrelated to the stock of knowledge already acquired in school.
– Somjit Datta,
somjit.datta@gmail.com
Assistant Professor,
Department of Mathematics
HITK
HITK
Comments
Post a Comment