Mathematics and Programming

I read many blogs and posts on the mathematics forum in programming and concluded for myself that basic mathematics is required in programming. I am not a very good mathematician. But is it possible to improve my logical and algorithmic thinking without delving into the science of mathematics? Are there any exercises or some books that could help me improve these skills so that I can become a good architect?

Thanks in advance.

+6
math resources
source share
11 answers

But is it possible to improve my logical and algorithmic thinking without delving into mathematical science?

But logic and problem solving are the foundation of mathematics.

I suspect that the real problem is how to teach mathematics and what you (and your previous teachers) think are mathematics. I would recommend The Mathematician Lament , for a better explanation of what mathematics is, compared to what we are usually taught, is mathematics.

Are there any exercises or some books that could help me improve these skills so that I can become a good architect?

Yes, others gave you a better list of sentences than I could, but the main idea is yes, you can learn to be better at mathematics, in particular at mathematics, which most often relates to computer science and programming.

I assume that you mean a software architect, because traditional architecture, such as engineering, has a solid foundation in applied mathematics. In any case, a good software architect should be comfortable enough to perform an informal task and algorithmic analysis, which requires a mathematical foundation.

I would say if you could find out what is equivalent to the typical requirements of first-year university mathematics for obtaining a computer science degree (i.e. the first year of calculus, discrete mathematics or linear algebra), this would take a long way to make you a better computer scientist and best programmer or architect. It is impossible without, but it can make you better at your job (faster to evaluate or solve problems correctly, efficiently and effectively).

Good luck.

+2
source share

Work through Project Euler .

Start CLRS Algorithms have a little bit about number theory, discrete mathematics, combinatorics, probability, graph theory and other really useful things. It teaches exactly what applies to algorithms, and skips everything else.

+7
source share

http://en.wikipedia.org/wiki/Concrete_Mathematics <- written especially for you by Donald Knuth!

+6
source share

You may be interested in Project Euler for exercises.

Here is an interesting article, if you haven’t seen it, which discusses mathematics through Wikipedia:

http://steve-yegge.blogspot.com/2006/03/math-for-programmers.html

+3
source share

Great suggestions above - to put some of them in context, there is a great project to reform math education in high school. This can help you understand some of the shortcomings of math learning and how to overcome these difficulties.

Remember - most of math education is to use your ability to think abstractly and solve problems. Both of these skills are practicing and sometimes, even if you do not see a direct connection between problems and the so-called "real life", there is always something to learn and practice, having developed problems.

+3
source share

I would say that the math you need depends on the problems you are asking to solve.

The problems you want to solve depend on your math skills.

Anyone who says that you only need 4th grade math also tells you that you cannot reasonably expect to be able to solve more complex problems.

I would say that computers have changed math and applications. My engineering background consisted of many calculi and closed forms using pencil and paper.

My first career meant applying discrete, numerical analogues to these methods on computers.

If you want to do such a job, it is best to learn a lot about numerical methods and linear algebra .

Google Page Rank was a problem with the eigenvalue of $ 25B when this document was published. Today, the Google market is worth $ 144B.

Computer graphics are very mathematically intense. If you like graphics, learn math better.

Statistics are very important, especially when you have oceans of data available to you on the Internet. Learn R and basic cold statistics .

Read something like “Programming Collective Intelligence” to find out what new problems will require some complicated math.

If you want to solve these problems, the best thing to do.

+2
source share

The emphasis on what constitutes “discrete mathematics” in computer science courses has shifted over the past forty years. It was previously thought that such courses would cover materials such as abstract algebra, and be included in concepts such as "sorting" and "types", which is useful for the algebraic specification of programs. If this is the math you think you will like, then buy an old Discrete Maths book like this one: Discrete Math in Computer Science (1977) $ 5 sent!

I don’t believe that the ridiculously expensive book of Suzanne Epps contains similar materials and I should know, since this terribly overpriced book is what I should have used Discrete Maths (2003) in my class - I can’t believe that the price has almost doubled after its outrageous price even then!

+1
source share

You do not need to know calculus in order to be able to program. Computer programming consists of very simple mathematical operations, just addition, subtraction, multiplication, decimal rounding, and even long division (4th grade mathematics come in handy).

Counters are extremely useful; you need to know how to start from scratch and count. Just. Most languages ​​have a null value starting at zero, rather than starting at one. Many students forget this. Increment and pre-increment (for example, i++ and ++i ) increase the variable i by 1 after or before using the variable in the instruction.

Logical operators are huge in programming. Smaller and larger than often used to test a specific value and stay within the proper range. You should understand that i < 5 matches 5 > i , but they calculate either true or false . When used like this: if (i < 5) ... , when i = 4 , then this is equivalent to if (true) ...

Similarly, the AND, OR, and NOT operators are important for logical testing. You can know if (i < 5 && i >= 0) ... , which means that if I am less than five AND I am greater than or equal to 0. NOT ( ! ) And OR ( || ) act in a similar way.

Some languages ​​require you to distinguish between integers and decimal numbers (or floating point numbers). Integer math uses rounding in ways that are different for each language. Decimals have different accuracy problems as operations become more complex.

Some advanced methods include the operation of the module ( % ). All that does is take the remainder of the division of the two numbers. This is useful for distinguishing even and odd numbers (for example, rows in a table).

More general information on the basics of computer programming, including control structures and operators: http://computerprogramming.suite101.com/

+1
source share

There are many types of programming. If you are developing wireless compression algorithms, you probably want to get a master's degree in engineering. If you do an online color picker, you'll be fine with a high school trigger.

0
source share

Mathematics for Computer Science , a free educational book from Princeton provides good coverage of mathematics related to programming and computer science in general.

0
source share

It is true that a good foundation in mathematics will help in programming a lot! To improve algorithmic thinking, you can try to solve combinatorics issues. Sometimes some mathematical results help reduce code complexity, so if you want to solve basic problems, take care, at least at least with high school math. I suggest you read the "Art of Computer Programming" by Donald E. Knuth and "Concrete Mathematics" by Ronald L. Graham, Donald Knuth and Oren Patashnik. I think that Concrete Mathematics will give you a good foundation for mathematics for computer science, you should try.

The best coding!

0
source share

All Articles