laitimes

If you don't engage in the Informatics Olympiad, will your child still learn to code?

Although the popularization of artificial intelligence has become a national strategy, there are still a large number of parents who do not know what to learn programming and how to learn it. The parents' mentality is very realistic: what can learning to code bring to their children, and in particular, can it help them go on to higher education?

As programming became more widespread, two different voices emerged. One is that programming has high requirements for mathematical foundation, and if the mathematical foundation is not good, programming will definitely not be good to learn; The other is that anyone can benefit from learning to code, which doesn't require a good foundation in mathematics.

So, which one is right? Here are eight questions to answer your questions.

If you don't engage in the Informatics Olympiad, will your child still learn to code?

Question 1: Programming = Informatics Olympiad?

One of the main reasons for the disagreement is that many people equate the Olympiad in Informatics with programming. But the two are not the same. The Informatics Olympiad is just a small subset of programming. It's the same as all of us who want to learn math, but only a very small percentage of us go to the math Olympiad.

At a time when the threshold for programming is getting lower and lower, general programming only requires a certain amount of logical thinking ability. Most of the core algorithms and frameworks are off-the-shelf, and the average programmer can simply assemble them as needed to accomplish a specific requirement. So, don't think about the profession of coders, most of them are just code movers and assemblers. But the Informatics Olympiad is different, requiring very strong mathematical skills, problem analysis and problem solving skills. Even a veteran programmer with more than three years of work experience is normal for zero eggs when faced with the problems of the Informatics Olympiad.

Question 2: What is programming?

Is the Informatics Olympiad programming? Be!

Is it programming for children to play with a robot and build a building block? Also!

But the relationship between the two is like asking: Is addition and subtraction within 100 mathematics? Is Fermat's theorem mathematics?

So, what exactly is programming?

The purpose of programming is for computers to help humans solve a certain problem. In order for the computer to understand human intentions, human beings must tell the computer the ideas, methods and means required to solve the problem in a form that the computer can understand, so that the computer can work step by step according to the instructions of the human and complete a specific task. This process of communication between humans and computers is programming.

The difficulty of programming mainly depends on two aspects: first, the friendliness of the programming language; The second is the difficulty of the problem to be solved. Of the two, it is the latter that plays a decisive role. From the earliest machine languages to assembly languages to high-level languages and now graphical programming languages, the syntax of programming has become quite friendly. But no matter what programming language is used, the percentage of programmers who can write the Eight Queens problem is really not high.

It's like the United Kingdom thinks French is easier to learn than Chinese. In any case, it is not difficult to learn to speak a language and be able to communicate with people, but it is not easy to write a poem or a novel in any language.

Question 3: Why is the Informatics Olympiad so much concerned?

There is probably only one answer: the Informatics Olympiad can be linked to further education!

Question 4: What is the relationship between programming and mathematics?

It depends on what you're learning to code.

If you are learning programming from the Informatics Olympiad, then programming is definitely strongly related to mathematics. Because the Informatics Olympiad itself bears the heavy responsibility of IQ selection, and mathematical ability is the most basic. Specifically, the Informatics Olympiad involves the content of discrete mathematics, and the knowledge points mainly include counting, number theory, set theory, graph theory, mathematical logic, discrete probability, matrices, etc. In terms of thinking and methodology, the requirements for recursion and divide and conquer are relatively high. Of course, in addition to mathematical ability, the Informatics Olympiad also requires a series of comprehensive abilities such as reading comprehension ability, problem decomposition ability, and coding ability.

What if you don't do the Informatics Olympiad? Programming and math are not so strongly correlated, and sometimes even weakly correlated. Nowadays, the threshold for programming is getting lower and lower, and some programming work is actually just a simple call of some functions. If you understand some basic programming syntax and read the interface manual, you can implement some useful functions. If the requirements are a little higher, you need to implement some code by yourself, and then logical thinking ability and abstract ability are indispensable. A little more difficult, when it comes to the core algorithms, then mathematical ability is essential. The entire group of programmers is also a pyramid structure, and the core algorithms are at the top of the pyramid, which is really a minority. Most programmers don't really need to know complex math.

Question 5: When is the right time to start learning to code?

Nowadays, some institutions in the market advertise that kindergartens can start to learn programming, which confuses some parents who do not know what to do. Personally, I think that except for a very small number of gifted children, ordinary children are not even sound in the most basic logical thinking at the age of 5, and there is no way to learn programming. Moreover, even if you learn ordinary programming, the most basic four operations and logical operations are still necessary foundations, and judging from the progress of mathematics teaching in the classroom, it must be at least the end of the second grade.

Many parents want to learn from their children's experience in learning English, hoping that learning programming can also start early like learning English. It's not that younger kids can't learn to code, it's just that programming is really different from English. Children have strong memory skills, and they start learning English for three more years from an early age, and the effect is solid and can be seen, and it takes two or three months to learn late and can't catch up at all. But programming is different, the same intelligence of the baby, from the age of 5 to learn programming for three years, after learning at most half a year to catch up. Therefore, the thinking has not reached that point, and learning early is purely half the effort, unless the money is jumping in the pocket.

Question 6: How to choose the language for children to learn programming?

If you want your child to be exposed to programming early and become interested in programming, then you can choose graphical programming as the first language. After the child understands how the program works, parents who want to let their child go through the informatics competition can choose to let their child learn C++ code around the fifth grade.

If your child has an average talent for math, or if you don't want your child to go to school through an informatics competition, but just want to experience the fun of programming and build computational thinking, then graphical programming can go all the way to the fifth or sixth grade. Going forward, python is a good choice for now, as it can make some cool stuff very quickly.

Question 7: Can graphical programming train computational thinking?

Some parents believe that computational thinking training requires learning code languages such as C++ or Python, and that graphical programming can only be used to build blocks for fun. Actually, this perception is incorrect.

The reason why graphical programming has not played a good role in training computational thinking at present is not that the graphical programming itself, but that the market has delegated the learning of graphical programming too much. Many institutions delegate graphical programming to the third grade and below. In the first and second grades of primary school or even kindergarten, if you don't have a foundation in logic and mathematics, how can you cultivate computational thinking? If you learn graphical programming in a higher grade (such as the fourth, fifth and sixth grades of primary school), it can be used as a carrier for computational thinking training.

Essentially, computational thinking training is independent of the specific programming language. This is as if a person's literary accomplishment has nothing to do with the language he uses, classical Chinese can write excellent literary works, and modern vernacular and English can also be used.

Question 8: Does programming affect subject courses?

Some parents will have such concerns: it takes a lot of time for children to learn programming, and will it affect the learning of subjects when they enter junior high school? Because of this, after entering junior high school, many parents no longer support their children learning to code.

It's natural to have this concern, but if it's really computational thinking and programming literacy, it's not necessary.

Let's take a look at what programming can develop in children.

Programs are written to solve a specific problem, but the problem is usually expressed through a situation, unlike a math problem that abstracts us. Therefore, learning to code first helps to improve children's ability to understand problems, analyze problems, and abstract problems.

A slightly more complex problem is often made up of several sub-problems, some of which we are familiar with and can use existing programs, and some of which we need to write. Learning to code is very helpful in improving children's problem-solving skills.

In the process of writing a program, the ability to think logically is extremely important. The most common things used in programs are logical judgments and loops. What conditions are met to execute which branch program, and what conditions are met to exit the loop, all of which require a high level of logical thinking ability. Of course, with or without good mathematical literacy, the programs written can vary greatly. Having a good mathematical mind can often achieve dimensionality reduction and write very concise and efficient programs.

Writing a program is often a process of continuous optimization. At the beginning, a program that can run is often not so efficient and the structure is not so beautiful. At this time, we can continue to look for better ways to improve the efficiency and readability of the program. Therefore, programming can train children to continuously optimize and strive for excellence.

If the math problem is wrong, it will be difficult to see if we don't check it, not to mention that some math problems are not easy to check. But the program must not be sloppy in the slightest, and if it is wrong, it will not work, or the execution result will not meet our expectations. You can't be careless in programming, and if you find something wrong, you have to look for the problem like Sherlock Holmes. It is possible that a small mistake can take half a day or even longer to find out the crux of the problem. Therefore, programming is very helpful in overcoming children's carelessness, exercising children's patience, and improving children's ability to diagnose errors.

For a large program, we often need several people to work together. At this time, the program should not only be written for yourself, but also for others to understand. Therefore, programming is very helpful in developing our ability to work as a team, as well as to think in a structured and modular way.

Yes, programming does take time, but the abilities acquired directly or indirectly in the process are beneficial for subject learning. Then again, why don't you spend time learning?

Author: Yu Da, Ph.D. in Computer Science, Chinese Academy of Sciences, University Professor, Doctoral Supervisor. He has presided over 4 projects of the National Natural Science Foundation of China and published more than 60 papers in high-level journals and conferences at home and abroad. He has won the first prize in the National Mathematics Olympiad League for junior high school and high school, the first place in the Jiangsu Division, and a perfect score in mathematics in the college entrance examination. He is the author of the best-selling books "The Beauty of Mathematics for Children", "Getting Plane Geometry: How to Come Up with Auxiliary Lines", "Mathematical Thinking Lessons for Children" and "Mathematical Problem Solving Thinking Lessons for Children".

【Collection】Informatics Olympiad Zero Basis [L0 Course End]: Lesson 01-Lesson 60 Video Playback Catalog

Read on