Enhanced programming with advanced math

I came to understand that sooner or later I would like to build more complex applications that will make better decisions, and not just if / else statements.

My mathematical background right now is on basic trigonometry, I would like to get the skills necessary to create and understand algorithms.

From what I explored, I would need to understand and study the following topics:

  • Extended Algebra
  • Calculus
  • Discrete Math

This is the conclusion I have come to. I was also wondering if there is a site where you can practice this type of math and track your progress.

Thanks.

+6
source share
5 answers

Let me list a few areas and why you should study them:

Algebra / Number Theory . There are many theoretical numerical algorithms, and at some point you may need to use / modify the existing one. Knowledge of the theory underlying their work greatly facilitates their memorization (and restores them if you do not forget;)). A classic of such an algorithm is the Euclidean algorithm for finding the greatest common divisor of two numbers. More complex algorithms, such as quadratic sieves, etc., are widely used in cryptography.

Graph theory . I hope I do not need to explain it too much. Charts are used to solve many many problems in computer science. They are used to represent networks, relations between objects, as well as a huge class of special applications. Algorithms include the shortest path, network stream, coloring, etc.

Linear Algebra : Again, there are many scientific applications of linear algebra. I think I can say with confidence that the main use of linear algebra is to solve systems of equations. Complex differential equations are solved using linear algebra. Knowing how to multiply huge matrices and solve huge systems of linear equations lies at the heart of many computer simulations. More closely related to everyday computing, computer graphics (especially 3D graphics) are based on linear algebra.

Calculus . It should also be self-evident. You will not be very far to do anything related to mathematics and science, without knowing the calculus. While the curse of college students, it really is everywhere in modern science.

Probability . There are a number of probabilistic algorithms that rely on the likelihood of doing their dirty work. Also, modeling can also use randomness and the likelihood of good results. Itโ€™s not very difficult to learn the basics of probability that you really need.

Statistics . If you are writing a program that calculates statistics and performs statistical tests, or you yourself use statistics, this is a very useful tool for decoding and interpreting information. Indeed, anyone, not just mathematicians and scientists, should have at least the basic characteristics of statistics.

Numerical analysis . This is a kind of trick. This is what connects mathematics and computer science. Math works well and well on paper, but when you start discretizing and limiting real numbers, you will have problems. This is what numerical analysis is for. It describes the various numerical problems that you may encounter when working with these mathematical algorithms, as well as math / computer tricks that you can use to avoid / fix them.

+5
source

Although this is a very subjective question for which the correctness of the answer cannot be correctly evaluated, here are a few pointers:

  • Most algorithms require only one branch of mathematics. If you want to create algorithms in a specific problem area, you may not need to study all of these branches. (If you just want to improve for the sake of this, the answer becomes even more difficult, since it is obvious that everything you study is valuable.)

  • Check competitor sites. Some, like Project Euler, are mostly focused on math problems. Others, (TopCoder, ACM ICPC, spoj, ...) focus on all kinds of algorithms.

+3
source

You left a few important ones from your list:

  • probability
  • statistics
  • linear algebra

You may not be too rich, too thin or too much mathematics, but I would ask if you need to go this route. You can do a lot of relatively complex and useful programming work without using calculus or linear algebra; it just won't include scientific computing or graphics in Pixar.

I would also ask how likely it is that something is so strict that it can be done through self-study. You would be a rare person who independently mastered calculus after completing formal training. Mathematics is usually a one-way door - if you do not go through it early, it is difficult to return later.

+3
source

I have found that mathematical induction can be very useful in developing and understanding a wide variety of algorithms. There's a good book that takes this idea pretty far: http://www.amazon.com/Introduction-Algorithms-Creative-Udi-Manber/dp/0201120372

+2
source

A good overview of topics useful for computer science can be found on MIT OpenCourseWare. Having studied the curriculum for class 6.042 ("Mathematics for Computer Science"), you can get an idea of โ€‹โ€‹what topics are useful: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6- 042j-mathematics-for-computer-science-fall-2010 / readings /

This link leads to online class course notes, which are a great learning tool. Courses and answers are also available at OCW. I would definitely start by working on some of these materials, as this is necessary for all CS students at the Massachusetts Institute of Technology.

+2
source

Source: https://habr.com/ru/post/892562/


All Articles