2.1 Computation and abstraction

Mathematics has given the world a number of algorithms, computational procedures that can be taken and directly apply to a specific, often very narrowly focused, problem. Let us name the  Fast Fourier transform (FFT, application in signal processing, e.g. in the  mp3 format),  Simplex algorithm (application in machine learning algorithms and optimization problems), or cryptosystems like for example  RSA, based on number theory or cryptosystems based on  elliptic curves (ECC), etc. Other interesting examples of algorithms can be found in the article (Cipra, b.r.).

The question, however, is whether it is admissible to reduce IT mathematics only to this computational aspect, as it usually happens in secondary schools. It is not appropriate to perform such a mutilation of university mathematics for several reasons (and not only according to the author of this text). Let us try to mention at least the most important here.

Mathematics is very closely connected with the so-called  scientific method of knowledge, which can be said to be the basis of our civilization without much exaggeration. A frequent human goal is to find a deeper understanding of the world and to solve various problems. Mathematics in this activity does not play the role of a mere numerical machine. For any given problem, first it is necessary to analyze it, dismantle it into parts and examine their relationships and behavior. Then, typically, a mathematical model is created so that (more or less) it describes the problem. Subsequently, in the context of this abstract model, one tries to draw conclusions and solve the original problem.

Similarly, it is possible (and very often this is the case) to think at programming in an abstract way, to create programs that solve a given problem. Usually, the programmer is confronted with a real problem that he must first analyze and describe. He thinks about how to consider the problem (for example, create a detailed object or database model) and he proposes a solution. Subsequently, he embarks on the implementation of the solution. Without a good intuition, based on understanding the problem, its solution is unlikely to be of good quality.

To program logically – i.e. to think abstractly about individual parts of the code – several programming paradigms serve, for example

It is no coincidence that the latter three paradigms are closely inspired by the mathematical way of thinking. The goal of these efforts is to bring order to the problem and improve its understanding. The above paradigms represent different abstract ways to consider and think models and algorithms.

It is also worth noting that some practical tasks have no effective solution. This may be a small shock to students coming from high school. But school examples are very special kinds of problems, often chosen just to have a nice solution. The absence of an effective solution means that there is no suitable algorithm to effectively address the task. Again, slightly surprising, this fact may not always be a bad thing, and on the contrary, it can have a good use, for example in computer security.

Example 2.1

For example, consider the task of deciding whether a natural number $n$ is a prime or a composite number. We can try to look for factors (nontrivial divisors) of $n$, but this is a difficult task (for $n$ big). On the other hand, you can effectively decide whether the number $n$ is not prime without knowing its factors. On this observation is based the cryptosystem  RSA.

At the end of this more abstract part of the text, let us make one more comment. Namely, a university graduate should be able to think about what he/she is doing. The work that can be automated was, is, and will be done by unthinking robots. He/she should also have a desire to learn and explore new things. IT students pay this multiple times. You never know what kind of problem you will be facing in the future, nor do you know where your technology and tools will move in your industry. Mathematics, as a systematic and logical way of thinking, can only help you in this endeavor. Moreover, math is beautiful.