Do you need to have a high level of mathematical knowledge or great language learning skills for programming? Researchers are trying to find answers to this question to help make coding easier to learn and learn.
Many of us grew up with the idea that coding is a very complex and difficult skill that not everyone can learn. For some people who have difficulty learning a foreign language, coding is also a language and beyond their ability.
In addition, there are other groups of people who believe that coding requires mathematical knowledge and because they are poor at solving mathematical problems, they think that they can not learn coding.
But which group is right? Is programming related to language skills or mathematical knowledge?
If a person does not have sufficient skills in learning foreign languages or has difficulty solving math problems, can he not become a good programmer?
The problem is that it is difficult to stop comparing a computer to a human brain; A comparison that often makes it easier for us to understand many things; But sometimes it contradicts the actual way the brain works.
One of the questions that is constantly asked about the similarities and differences between computers and the human brain is how to process and read code.
Does our brain process computer code like a language or treat it like a math problem?
Getting the answer to this question and understanding how the mind works when processing code is very important from an educational perspective and provides valuable tips on the best way to teach coding.
In a Gallup poll in 2016 showed most schools tend to teach America to start coding. Meanwhile, principals of 66 percent of preschool to high school believed that computer science should be taught to students alongside other subjects.
Most European countries have added coding and computer science classes to school curricula (France and Spain in 2015). This new generation of coders is expected to increase the world’s developer population from 23.9 million in 2019 to 28.7 million in 2024.
Despite all these efforts, there is still confusion in how to properly teach coding. Is coding more like language or math?
Some schools around the world allow students to choose a programming language as a “foreign language” and teach it in a similar way to other languages, such as French.
This approach is probably an effective way to attract more students to coding; But if reliance on language learning techniques is not appropriate for teaching coding, then students’ learning is impaired.
Likewise, trying to teach coding similar to teaching math may be just as wrong and not get the desired result.
To address this issue, studies and experiments have been conducted in recent years that have analyzed the brain activity of programmers while reading the code.
Coding: Language or Math?
There are currently two schools of thought about the nature of coding. The dominant theory views coding as a language with its own grammatical and writing rules. Isn’t Python, Java and C the programming language? So there must be a reason for this.
There is even an apt acronym in support of this idea: CAL, which stands for Coding as Another Language.
Another group of people have a different view of coding. To them, coding is more like learning mathematical logic; Because it needs a formula and algorithm to output the input data. Even Web sites on the Internet that teach the same mathematical coding.
But which approach is more effective? Does learning programming require language skills or math skills?
If one is poor at math, does that mean one cannot become a good programmer and have to give up the skill altogether?
There has been controversy over this since coding began in schools, and the language school seems to be gaining traction. School laws in Texas, Oklahoma, and Georgia allow students to choose computer science for a foreign language unit.
In Texas schools, for example, a student can take a coding class instead if a student has not made progress in a foreign language class.
This is a very interesting topic for neuroscientists, apart from people who want to learn or teach programming.
Because computer programming is only a few decades old, the brain has not yet created a specific area for processing it.
As a result, the part of the brain that now processes computer code was previously used to process other work and has now changed its use. Two brain systems are potential candidates for code processing: The system of language activities or the system responsible for performing complex cognitive tasks such as solving math problems or crossword puzzles, known as the “multiple demand network”.
Coding is a kind of language
If you are one of those people who are interested in learning programming and have not mastered this skill due to lack of mathematical knowledge, you will probably welcome the results of a 2020 study conducted at the University of Washington .
The results of this study showed that coding is not thought to be closely related to mathematics and that the importance of mathematical literacy in learning coding is exaggerated.
People with stronger language skills are more likely to become good programmers
Chantelle Pratt , a neuroscientist at the University of Washington and the study’s lead author, has spent years studying how the brain learns. He thinks people with stronger language skills are likely to be good programmers. This idea was followed in other studies ; But there was not enough data and evidence to prove it.
Pratt and his colleagues approached a group of 36 English-speaking people with no programming knowledge to teach them the basic Python level. Prior to the Python training, the research team scanned participants’ brains to examine their brain wave patterns at rest.
The team then took a written test to assess participants’ skills in different disciplines and compared the results of the assessment with their ability to learn coding.
Researchers have found that instead of mathematical knowledge, it is the skill of using language, memory and reasoning that plays an important role in predicting how good a person is at learning programming.
This study showed that mathematical literacy (including the four basic operations at the most basic level and measurement, geometry, probability and statistics at higher levels) correlated with learning speed; But in general it has nothing to do with how Python learns; Rather, language, memory, and reasoning aptitudes are more correlated with learning speed, accuracy, and recall.
Of course, Pratt emphasizes that the results of this study do not mean that coders do not need any mathematics. Rather, the model of mathematical knowledge required for programming requires a skill that can be used in many disciplines, rather than computational ones.
According to Pratt, “Many people mean mathematics to actually solve problems; “But coding is not very much about math literacy.”
Of course, this study has its limitations, and we still do not know much about how coding is processed in the brain and why some people are better programmers.
On the other hand, the language of programming, others like Java, C ++, and ARM who are not Python readability, there may be greater challenges for people who have to learn the code, create; But the evidence in this regard is not scientific and is only anecdotal evidence.
Coding is not just for people who are good at math
Another problem is that this study was conducted only at the introductory level of Python, and it is unclear whether the same results will be obtained if coders enter the subject of more complex algorithms and seek to solve more challenging problems.
But for Pratt and his team, it was enough to conclude that coding is not just for those who are good at math skills. As user-friendly programming languages like Python become more popular and more people are learning them, educators have the opportunity to find out what coding is right for them and what applications it can have in different professions.
Coding is neither entirely linguistic nor mathematical
In a more recent study published a few months ago, a team of researchers at MIT and Tufts University asked about 20 adult, coding-skilled participants to use fMRI to analyze their brain activity when solving programming problems.
Observing which parts of the brain are activated when solving these problems helps researchers determine how coding languages are processed in the brain.
For example, if the areas of language processing in the brain are activated, the brain can be said to behave like computer language; But if the areas of mathematical processing are activated, it can be concluded that for the brain, solving programming problems is like solving mathematical problems.
The coding languages used in this study were Python and Scratch Jr. Python is a favorite language of researchers because of its high readability; ScratchJr also consists of symbolic images designed to teach coding to children.
Twenty-four adult participants (15 females) took the Python test and nineteen adult participants (12 females) took the ScratchJr test.
In the main task, participants were given an individual height and weight in the form of a Python code or a regular sentence to calculate their BMI (Healthy Weight-to-Height). For ScratchJr, participants were also asked to track the kitten’s position when walking and jumping.
The control task of this study included memorizing the sequence of squares in a network (to activate the multiple demand system in the brain) and reading a meaningful sentence and a meaningless sentence (to activate the language system).
In this experiment, the language system of the brain reacted poorly when reading code, and the researchers concluded that despite the similarities between computer language and natural languages, the brain did not treat code as language.
Instead, reading the network code activated multiple demand in the participants’ brains.
Code processing is done more in a multi-demand network than in a language system
The network of multiple demand spreads to the frontal and parietal lobes of the brain and is responsible for performing difficult mental tasks, including solving math problems and crossword puzzles.
The network itself is divided into two parts (responsible for logical tasks) and the right part (related to abstract thinking).
MIT researchers found that reading Python code seems to activate both the left and right parts of the network, while ScratchJr uses the right part a little more than the left.
An interesting point in this study was that programming problem solving enabled parts of the multiple demand network that are not activated when solving math problems; Therefore, it can be concluded that the brain does not treat programming code like language or mathematical logic, and seems to be at the foot of a separate domain that is, of course, still in a network of multiple demands.
MIT’s research was accompanied by an article from Johns Hopkins University that came to a similar conclusion.
According to the article, “Solving programming problems activates a multi-demand network instead of activating language-related areas.”
This finding has implications for programming instructors. In the words of Clive Thompson, a technology writer, “One of the reasons scientists are looking for an answer to this math / language question is that we are really weak in teaching programming and computer science.” “No one fully knows whether to treat coding as mathematical logic or language.”
The MIT study concluded that for the human brain, the process of understanding code is not like language processing. Therefore, teaching coding like a foreign language may not be the right approach.
With these details, does learning programming require mathematical knowledge or language learning skills? Both or neither?
Some older studies have concluded that programming is a language, and many individuals and organizations treat programming as a language; But a new MIT study found that coding for the brain is a unique and complex process that cannot be categorized as one of the two.
“Understanding computer code seems to be a unique phenomenon,” said Anna Ivanova, lead author of the MIT paper. “It is not exactly like language, nor like mathematics and logic.”
The results of this study showed that there is no definitive answer to the question of whether it is better to teach coding such as math-based skills or language-based skills.
Part of this is because learning programming is likely to benefit from both the language system and the multiple demand system; But as a person develops coding skills, more code processing takes place in the area of the multiple demand network, which is concerned with logic and problem solving, and the dependence on the linguistic regions of the brain diminishes.
Coding is not exactly like language, nor is it like math and logic
Thus, it seems that computer science educators need to develop their own approach to teaching coding as efficiently as possible, which will likely include elements from both language and math education.
On the other hand, an experiment conducted by Japanese neuroscientists last year on novice, experienced and specialized programmers showed that activity in parts of the brain associated with natural language processing, episodic memory retrieval and attention control increased with the development of programmer skills.
Was strengthened. This finding suggests that coding may not be as similar to language as we thought; But like language, it will be more effective to start learning it at an early age.