When a person is studying to become a programmer, a large range of mathematical disciplines is taught to him at a university. How many sections will be studied depends entirely on the direct specialty. As a rule, the theory of functions of a complex variable, differential equations, functional analysis, and so on are taught. However, knowledge in these areas is not useful to the programmer.
The article will describe only those sections of mathematics that are really needed. It is important to understand that if a programmer is engaged in specific software, for example, developing utilities for physicians or physicists, then the knowledge gained at the institute is not enough. But for ordinary everyday programs, they are quite enough.
Areas of mathematics
Many are wondering if you can become a programmer without knowing the math. Of course you can. A programmer is not a person who perfectly solves equations and raises numbers to a power, but one who knows several programming languages and is able to create programs. Mathematical knowledge decides how competent a person will be in their field of work.
It is not necessary to study the sections of mathematics given in the article to the very depths. It is enough to know the basics and to understand them freely. If you need more in-depth knowledge, you can always get it from the Internet.
What sections of mathematics do a programmer need? It is mainly discrete. It is important to understand logic, combinatorics, probability theory, mathematical statistics, linear algebra, graph theory and complexity. As you can see, they all develop a person and are designed to improve the flexibility of thinking. Next, we consider each discipline separately.
Logics
Mathematician and programmer are professions that are interconnected. Math programming, one might say, is not necessary. It is very important for a programmer to understand many mathematical concepts. Consider the usefulness of logic.
A computer consists of material parts and software. All of them cannot work without mathematical logic. Now it is used widely during the use of various programming languages, allowing you to make programs as convenient and non-resource-consuming as possible. What is a utility? This is a sequential system that executes commands sewn into it or coming from input-output devices. If we consider the concept of "program" in more detail, then we can notice the participation of logic in this whole process.
In the 30s of the 19th century, the first ideas of a computer appeared. Then logic became one of the fundamental structures. The mathematical section itself began to develop rapidly at the beginning of the 20th century. The studies that were then carried out laid the foundation for all programming languages based on the algorithmic execution of commands.
At present, this section is being studied so that a programmer can independently develop programs without relying on the created templates. However, successful mastery of logic will develop non-standard thinking, which is important for any programmer. In principle, all areas of exact science should be directed precisely at this goal. That is exactly what mathematics plays . In the profession of a programmer, it is an integral part.
As for the more detailed sections of the logic that would be worth exploring, we should note Boolean algebra, logical variables and operators, truth tables.
Combinatorics
What is this section of mathematics? He teaches you how to calculate the number of possible combinations to achieve your goals. In contrast to the above logic, combinatorics is used everywhere. It should be noted that she is the unspoken "mother" of the same graph theory. The latter was used to create network protocols, but more on that below. Going deeper into the creation of various utilities, it becomes clear why the programmer needs mathematics. Thanks to this science, information technologies are developing so quickly and successfully. If not for her, then we could hardly have seen computers, routers, phones, and so on. After all, they need firmware.
Additional information on combinatorics
It should also be noted that combinatorics is used for routing in networks. Artificial neural networks are also created on its basis. Thanks to this section of mathematics, artificial intelligence is being developed. Combinatorics is also essential in cryptography.
It should be noted that this branch of mathematics requires developed thinking, which helps the study of logic. As it already becomes clear, these sections are interconnected and closely intertwined. That is why they are combined together under the name "discrete mathematics".
Probability theory
Those programmers who work as data analysts should be well versed in probability theory. Why? So that machine working methods do not seem like “magic”, you need to understand mathematical statistics. It is based on probability theory.
This section of mathematics can be divided into two parts. The first is discrete, the second is continuous. Beginning programmers who do not like exact science can be disappointed, since both of these sections of mathematics are useful in the profession of a programmer. The discrete theory is designed for phenomena that are described with a certain number of possible options. We are talking, for example, about coins or dice. Continuous is based on phenomena that are distributed in a circle or segment, that is, on a dense set.
Game Probability Theory
If a programmer is going to develop games, and not sit in the analytical department of the company, he will still have to deal with probability theory. To make it clear why this is necessary, consider a simple case. For example, the object of development is a shooter. The mechanics of shooting is almost the main element in such a software project. Those shooters where the weapon shoots as accurately as possible are unlikely to appeal to most players. Therefore, scatter should be added. Make points as random as possible. This will cause problems with fine tuning and upset the game balance. If you use knowledge from probability theory, you can take random indicators, and by their distribution make an analysis of how this or that weapon will work with a given spread. So you can adjust the game.
Analyzing the role of mathematics in the profession of a programmer, it should be said regarding probability theory that thanks to this science, neural networks, exchange trading robots, crypto-analysis and encryption algorithms are created. In addition, machine learning is an area where mathematical statistics and probability theory are used. You can’t do without them.
Math statistics
It should be noted that statistics and probability theory are interconnected. The first section is based on the second. As a rule, they are required to be studied at universities. Probabilities are taught first, then thanks to the data obtained, statistics can be learned. This section is used as often as probability theory. It is needed in almost the same areas.
Mathematical statistics is an important science for any programmer. To deal with it, you need to have flexible thinking and be assiduous. It’s not enough just to be like courses, to work out with a tutor. This will be enough to learn the basics and the base. To really begin to understand this topic - no. In programming, it plays a huge role. It is thanks to statistics that dynamic programs are created. It is not always possible to know the final digit in the run cycle, since all data is entered from the keyboard. It will help statistics. In any ambiguous problems, one should resort to the help of this section of mathematics. For programmers, it is like a magic wand. The main thing is to be able to use it.
What to study in probability theory and mathematical statistics
In order not to be afraid of the amount of information in these topics that will have to be studied, you need to understand what knowledge is needed at the initial stage. At the very beginning, one should master the events and their probabilities, combinations and sequences, and then Bayes' theorem. Dependent events will also be useful. To make learning easy, it is better to first learn logic, then combinatorics, and only then proceed with probability theory and statistics.
The programmer may find it useful to use data from the variance topics, expectation, measures of the average value of the sample. In addition, you should pay attention to random variables and their properties. Programmers need mathematics in order to create stable utilities in the future that can fully cope with user requirements.
Linear algebra
This section of mathematics will help you learn programming languages. Important topics: matrices and vectors, as well as basic operations on matrices. Why are they so important? In any programming language, when performing a complex task, a matrix of values is created. It works in the same way as in mathematics. To be able to correctly operate the functions of a programming language, you need to properly learn the math.
Algebra for games
This section of mathematics for programmers will be useful if they are going to develop games. Then it is worthwhile to learn additional topics about vectors. If the application has on-screen buttons, you can access the camera and its direction, but in any case you will have to use knowledge from linear algebra. A vector is needed in order to remember the location, direction and speed of an object. For the movement of a typewriter or other character, you will have to use vector addition. To shoot weapons, you need knowledge on how to subtract vectors. The same section of mathematics is necessary in games where explosions take place. To calculate the distance between them and the character, as well as to calculate the damage, you should be able to calculate the vector that is between them.
Graph theory
The specialties of a mathematician and a programmer are related, as mentioned earlier. At the same time, any successful connoisseur of exact science will be able to, having learned programming, create programs. As regards graph theory, it should be known superficially. It is needed in order to understand how certain details, programs and so on are arranged.
Thanks to this section of mathematics, algorithms for finding solutions are implemented. We are talking, for example, about the shortest path along the route, the location of the tracks on the chip, and the search for a winning game strategy.
In addition, it is often necessary to use AST to work with the program and debug it. If the programmer does not understand the basics of graphs, then it will be easy for him to get confused in git. To analyze and solve various problems, this section of discrete mathematics will also be needed. Graph theory is used to find paths and determine cycles that are used not so rarely (social networks, navigators, abstractions in computer games).
We recommend that you study graphs and everything that is connected with them (vertices, edges, subgraphs) in this section. You also need to pay attention to paths, loops, and routes. You should understand what operations can be performed on graphs.
Complexity theory
Considering what sections of mathematics should be studied for programmers, the advice of experienced IT specialists on the theory of complexity cannot be ignored.
This section of mathematics is necessary in order to describe basic and simple elements that further affect the system as a whole and help solve complex problems. To avoid problems, they should study the logarithms and the exponent. Often, knowledge from the concept of arithmetic sum is used in the work. The growth rate of the algorithms and their analysis will also be needed.
Summary
The article answers the question of what kind of mathematics a programmer needs. Without it, it will not be possible to create a program that will not occupy all of the RAM and at the same time solve complex problems. In universities, all of the listed sections of mathematics are taught. During training, it is worth paying attention to them, and not giving preference to differential equations, complex integrals, and so on. Mathematics for programmers is very important not so much for writing programs, but for understanding machine methods, neural systems.