Many may have seen Google's recruitment advertisement several years ago on the Internet. Its first question is as follows: {first 10-digit prime found in consecutive digits e }. A prime number consisting of the first 10 consecutive digits in COM and E. It is said that at that time, many subway stations in the United States had large advertisements for this question. If you answered this question correctly and entered this answer in the browser's address bar, you could enter the next round of testing, the entire test process is like a mathematical maze until you become a member of Google. Another example is an interview question from Intel one year: the cause of the illness in January 1, August 31, 1945. The year of his birth happens to be the square of his age when he was living. Q: In which year was he born? Can you answer this seemingly simple mathematical question quickly? The following is a recruitment test of Microsoft, the world's largest software company: two prime numbers separated by only one digit are called prime number pairs, such as 5, 7, 17, and 19, it is proved that the number between prime number pairs can always be divided by 6 (assuming that both prime numbers are greater than 6). Now it is proved that there is no prime number pair composed of three prime numbers. There are still many such questions. These questions seem to be mathematical at first glance. However, some famous companies in the world use them for recruitment testing, which shows that they pay attention to the mathematical basics of new employees. Mathematical questions and application questions are the most obvious type of questions in interviews with many large software companies. These questions are used to evaluate the applicant's mathematical and computer skills. A senior consultant from a consulting company once said: Microsoft is a computer software company, of course, requiring its employees to have certain computer and mathematical skills. This kind of ability will naturally be investigated during the interview. Microsoft's interview questions examine the degree to which the applicant can master the basic knowledge, the ability to apply the basic knowledge, and even the basic principle of computer. Therefore, such an interview question is indeed very "Spicy", enough to find the right people.
Professor Cao Guangfu from the School of Mathematics at Sichuan University once said: "A college student's future achievements will have a lot to do with his mathematical accomplishments ". College Computer students have feelings. The most difficult courses in computer science are discrete mathematics, compilation principles, and data structures, of course, courses such as composite mathematics, cryptography, and computer graphics make it hard for many people to learn, many students who think that the database has learned a lot cannot cope with the concepts of paradigm, function dependency, and transmission dependency, these are all caused by the lack of mathematical basics or knowledge. Mathematics is the foundation of computer science. This is why the most difficult questions (Mathematics 1) are used in mathematics for graduate students majoring in computer science, of course, this can also promote the rapid development of some new interdisciplinary disciplines, such as mathematics and application software, information and computing science. Many talented programmers are the top math programmers. As we all know, Bill Gates has always scored well in mathematics. He even expected to be a mathematics professor, his alma mater, freford Wright, head of mathematics at hubin Middle School, once talked about his students: "He can solve a certain algebra or computer problem in the simplest way, he can use the mathematical method to find a shortcut to solve the problem. I have taught books for so many years and have never seen any talented mathematical talents like him. He can even rival the good mathematicians I have worked for years. Of course, Bill is also doing well in all aspects, not just mathematics, he has a wide range of knowledge, mathematics is only one of his many specialties .". Qiu bojun, the chairman of Kingsoft Software Limited, which affects a generation of Chinese programmers, further explained the problem with the full score of the college entrance examination. Many people with good math basics can quickly understand the essence of some algorithms once they are familiar with a certain computer language, so that they can use them freely, it is possible to write algorithms with significant improvements in both time and space complexity.
A considerable part of the issues solved in programming involve a variety of scientific calculations. What kind of foundation do programmers need? The actual problem is converted into a program. It takes a process of problem abstraction to establish a complete mathematical model. Only in this way can we establish a well-designed program. It is not difficult to see the importance of mathematics in the field of programming. Algorithms and computing theory are the soul of the computer programming field. They are an effective tool that gives full play to the rigorous and keen thinking of program designers. Any programming language tries to give full play to it. Programmers need a certain degree of mathematical cultivation, not only the needs of programming, but also the need to cultivate logical thinking and rigorous programming style. Mathematics can train our thinking abilities and help us solve practical problems. It can help us learn more about philosophy. Why do people often have no idea about some scientific computing programs? They can read every line of code, but cannot predict the prediction results of the program, or even understand the structure and functions of the program, give him a slightly complex mathematical formula and he may not know how to turn it into a computer program. Many programmers are still working on simple MIS, designing MDI, writing simple classes, or using SQL statements to implement basic programming such as queries, for some programming jobs that require mathematical knowledge, it is easy to implement an accumulation program or a conversion program for tax rates, because they do not need any advanced mathematical knowledge.
An old programmer with more than 10 years of development experience once said: "the essence of all programs is logic. You have mastered the technology well, but you can become a professional programmer only by improving the logic capability. For example, you will be an 18-year-old martial artist, and you will never be able to go to the battlefield because you are proficient in knives, guns, and sticks, this effort is logical for programmers (it is essentially a person's mathematical cultivation, attention, not a mathematical knowledge )."
The mathematical accomplishments of programmers cannot be cultivated overnight. Unlike mathematical knowledge, mathematical cultivation requires a long-term process, while learning knowledge may take a short time. The following are my personal views on how programmers can improve and cultivate their mathematical accomplishments.
First, we should be aware of the importance of mathematics cultivation. As an excellent programmer, it is very important and necessary to cultivate a certain degree of mathematics. Mathematics is the foundation of natural science, and computer science is actually a branch of mathematics. Computer theory is actually a fusion of many mathematical knowledge. Software Engineering requires graph theory, cryptography requires number theory, software testing requires a combination of mathematics, and computer programming requires a lot of mathematical knowledge, such as set theory, queuing theory, discrete mathematics, statistics, and calculus. One of the biggest features of computer science is the rapid updating of information and knowledge. With the further integration of mathematical knowledge and computer theory, branch science, such as data mining, pattern recognition, and neural networks, has developed rapidly, the development of computer software theory and information management technology has been promoted by the control theory, fuzzy mathematics, dissipation theory, and Fractal Science. Strictly speaking, a program with a low mathematical foundation cannot be regarded as a qualified programmer. Many books about computer algorithms themselves are the application of mathematical knowledge and computer implementation manuals.
Second, the accumulation of mathematics knowledge to cultivate their spatial thinking and logic judgment capabilities. Mathematics is a branch of a large number of disciplines. We cannot learn the mathematical knowledge we have in a short life, such as functional theory, chaos theory, and some non-linear mathematical problems that can be mastered in less than three or five days. The cultivation of mathematics cultivation is not much related to mathematics knowledge, but requires programmers to have good Mathematical Learning Ability and quickly associate some mathematical knowledge with the problems they are solving, many scientific masters are not mathematical masters, but they have a strong understanding and keen observation of mathematics. As a result, a series of new disciplines were born, such as computational chemistry, computational biology, bioinformatics, chemical informatics, Computational Physics, and computational materials. Mathematics is the foundation of Natural Science. As a combination of theory and practice, computer technology needs to integrate some of the essence of mathematics. From the birth of the computer, it is generated on the basis of mathematics. The simplest 0 and 1 hexadecimal is an ancient mathematical problem. As a highly creative profession, program design requires programmers to have a certain degree of mathematical cultivation and accumulation of certain mathematical knowledge, we can better apply some mathematical principles and ideas to practical programming work. There is no end to learning. Continuous Learning is the only way to improve your cultivation.
Third, mathematics is mostly used in practice. Some colleges and universities offer this course, mathematical modeling. I have also studied this course during my college years. It is a rich set of courses. It associates many related disciplines with mathematics. It uses many mathematical models to solve practical production and life problems, and many problems need to be solved by computer programs. I have participated in the mathematical modeling competition in both the university and graduate students, gained a lot of experience, and further improved my mathematical cultivation. In fact, the current program design is a mathematical modeling process from some perspectives. The quality of the model is related to the success or failure of the system. Now, the idea of mathematical modeling has been used in many related disciplines of computer science, it is not just computer programming and algorithm analysis. We should know that mathematics is a science that needs to show its charm in practice, and computer programs are also compiled to help solve practical problems. Therefore, we should try our best to combine them, in this regard, computer cryptography is the most widely used mathematical knowledge. Every good encryption algorithm is backed by a mathematical theory, such as an elliptic curve, a backpack problem, and a prime number theory. As an excellent programmer, we should use mathematical knowledge flexibly as needed in actual work to cultivate certain mathematical modeling capabilities, be good at summarizing and summarizing, and gradually make our mathematical knowledge more comprehensive, the cultivation of mathematics has been further improved.
Fourth, the programmer's training system and teaching reform. Many programmers have many defects in the training system. At the beginning, they are required to be able to quickly master a language, take language as the center, and take over the core ideas of algorithms and related mathematical knowledge, this has caused many programmers to become backend computers, which is not conducive to the rapid growth of the programmers themselves, nor to the programmers to solve new problems. I have adopted some methods that are inconsistent with traditional methods in my long-term programmer training and computer teaching work, and have received some results. Many beginners tend to interrupt their thinking when writing a program, or find it hard to get started with some difficult programs, I used some methods to solve small mathematical problems before class to stimulate everyone's interest in learning. These small problems are not just a sharp turn, but many of them are very representative mathematical questions. Through the warm-up exercise of programming through mathematical questions, the students can stimulate their own thinking ability in the mathematical questions. Remember that an expert once said that frequent mathematical questions will make them smarter, it takes a long time to get confused with mathematical problems, which slows down your mind. Through some classic mathematical questions, we can cultivate the rigor and leeching of students' thinking. Many may disagree. In fact, some seemingly simple questions may not be able to give answers quickly, and the brain is constantly being used to become more flexible. Believe it? If you are interested, you can do the following questions to see if you can think of the answer within one minute. This is just an exercise after the primary school mathematics class. Many people think that their mathematical foundation is good, but it is said that more than 90% of people in this question cannot give the correct answer within an hour. Try it if you think I'm wrong.
Proof: AB + AC> dB + DC (D is an interior point of the Triangle ABC ).
Finally, read more and more questions, read more books, and read Classics. Here I would like to recommend two classical computer algorithm textbooks that you may already be familiar with. Many of them are actually mathematical knowledge. The first part is introduction to algorithms. The English name is introduction to algorithms. Author: Thomas H. cormen, Charles E. leiserson, Ronald L. Rivest, Clifford Stein. This book is mainly written by Ronald L. Rivest, one of the authors of computer science at the Massachusetts Institute of Technology, and won the Turing Award for his contribution to the public key cryptography algorithm RSA. This book is currently a standard teaching material for algorithms. It is used by many computer departments of famous American universities. Some colleges in China also use this book as a teaching material for algorithm courses. It is also frequently cited by many professionals. This book basically contains all the classic algorithms, and all the programs are implemented by pseudocode. This adds the versatility of this book, so that programmers who use various programming languages for program development can serve as a reference. In terms of language, it is suitable for algorithm teaching materials and self-learning algorithms. The other is the art of computer programming written by Donald E. knuth, which should be known by many people. The English name is the art of computer programming. Donald E. knuth spent the most brilliant time in his life at the computer department at Stanford University. The winner of the American Computer Association Turing Award is a well-deserved competition in his field. Some people say that a programmer who does not know knuth in computer programming means that he or she does not know Einstein in physics, Euler in mathematics, or Dalton in chemistry. The masterpiece of taocp is profound and profound, covering almost the most important content of computer programming algorithms and theories. Currently, only three volumes are released: basic algorithm, semi-numerical algorithm, sorting, and search. (At the time of writing this article, the fourth volume has come out, I also snapped up a copy in the first place ). This book combines a large amount of mathematical knowledge, analyzes various algorithms in different application fields, studies the complexity of algorithms, that is, the time and space efficiency of algorithms, and explores various applicable algorithms, its theoretical and practical values have been recognized by computer workers around the world. Many terms and conclusions introduced in the book have become standard terms and widely cited results in the computer field. In addition, the author has made in-depth research on the history of scientific development in related fields. Therefore, this book also provides a good introduction to the historical origins and development processes of many research achievements, this feature is rare in global scientific works. As for the value of this book, I think Mr. Bill Gates is enough to explain the problem: "If you think that you are a really good programmer to read knuth's" computer programming art ", if you can read the entire set of books, please send me your resume ". The author's mathematical skills have created a rigorous style in this book. Although this book is not described in today's popular programming languages, it does not damage its position as an "program design epic. The principle is simple. The design concept of its connotation will never be out of date. Unless it is difficult, we recommend that you use the English version. I personally read the English version of the book. Although it took a lot of money and time, it was quite rewarding.
In short, to become a potential and promising programmer, or to become a top programmer, you must cultivate good mathematical cultivation. Remember: for a person who can write various programs flexibly, mathematics is the soul of the program.
References
Lin qingzhong. Practice a programmer's professional standards. http://blog.csdn.net/imwj/archive/2005/02/02/27723.
[2] Liu rujia, Huang Liang. Competition in algorithm art and Informatics. Tsinghua University Press: 2004.
[3] Thomas H. cormen Charles E. leiserson Ronald L. Rivest Clifford Stein. Introduction to algorithms (second edition). The MIT Press: 2002.
[4] Donald. E. knuth. The art of computer programming. Tsinghua University Press: 2002.
[5] Jiang qiyuan. Mathematical Model. Tsinghua University Press: 1993.
[6] Zbigniew michalewicz, David B. Fogel. How to solve the problem: Modern heuristic method. China Water Conservancy and hydropower Press: 2003.
Author profile:
Liu Wei, National certified system analyst, National certified database system engineer, Doctor of computer application technology, Central South University, more than 10 years of computer software development and computer teaching experience, it undertakes teaching work in multiple schools and training institutions and participates in the organization and development of over 30 information systems. The students once won the first and second prizes of the National Postgraduate mathematical modeling competition. He has participated in the translation of a foreign monograph and published more than 10 papers.