Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the core mathematical concepts a good developer should know? [closed]

People also ask

What math should programmers know?

To understand programming, you must understand concepts within Boolean Algebra. You'll be using logics like AND, OR, NOT, XOR, and XNOR to build code, all of which are part of what you'll learn in Boolean Algebra, which informs how computer circuits operate.

What are 5 concepts of mathematics?

THFE five fundamental concepts which we aim to consider briefly are those of natural number, unknown, postulate, function and group.

What are the 4 basic concepts of mathematics?

--addition, subtraction, multiplication, and division--have application even in the most advanced mathematical theories. Thus, mastering them is one of the keys to progressing in an understanding of math and, specifically, of algebra.

What were the main mathematical concepts?

Generally, counting, addition, subtraction, multiplication and division are called the basic math operation. The other mathematical concept are built on top of the above 4 operations. These conepts along with different type of numbers, factors, lcm and gcf makes students ready for learning fraction.


Math for Programmers. A good read.


Boolean algebra is fundamental to understanding control structures and refactoring. For example, I've seen many bugs caused by programmers who didn't know (or couldn't use) deMorgan's law. As another example, how many programmers immediately recognize that

if (condition-1) {
    if (condition-2) {
        action-1
    } else {
        action-2
} else {
    action-2
}

can be rewritten as

if (condition-1 and condition-2) {
    action-1
} else {
    action-2
}

Discrete mathematics and combinatorics are tremendously helpful in understanding the performance of various algorithms and data structures.

As mentioned by Baltimark, mathematical induction is very useful in reasoning about loops and recursion.

Set theory is the basis of relational databases and SQL.

By way of analogy, let me point out that carpenters routinely use a variety of rule-of-thumb techniques in constructing things like roofs and stairs. However, a knowledge of geometry allows you to solve problems for which you don't have a "canned" rule of thumb. It's like learning to read via phonetics versus sight-recognition of a basic vocabulary. 90+% of the time there's not much difference. But when you run into an unfamiliar situation, it's VERY nice to have the tools to work out the solution yourself.

Finally, the rigor/precision required by mathematics is very useful preparation for programming, regardless of specific technique. Again, many of the bugs in programming (or even specifications) that I've seen in my career have sloppy thinking at their root cause.


I would go with the fields that Landon stated:

Discrete Math, Linear Algebra, Combinatorics, Probability and Statistics, Graph Theory

and add mathematical logic.

This would give you a grip on most fields of CS. If you want to go into special fields, you have to dive into some areas especially:

Computer graphics -> Linear Algebra
Gaming -> Linear Algebra, Physics
Computer Linguistics -> Statistics, Graph Theory
AI -> Statistics, Stochastics, Logic, Graph Theory

In order of importance:

  • Counting (needed for loops)
  • Addition, subtraction, multiplication, division.
  • Algebra (only really required to understand the use of variables).
  • Boolean algebra, boolean logic and binary.
  • Exponents and logarithms (i.e. understand O(n) notation).

Anything more advanced than that is usually algorithm-specific or domain-specific. Depending on which areas you are interested in, the following may also be relevant:

  • Linear algebra and trigonometry (3D visualization)
  • Discrete mathematics and set theory (database design, algorithm design, compiler design).
  • Statistics (well, for statistical and/or scientific/economic applications. possibly also useful for algorithm design).
  • Physics (for simulations).

Understanding functions is also useful (don't remember what the mathematical term is for that area), but if you know how to program you probably already do.

My point being: A ten year old should know enough mathematics to be able to understand programming. There isn't really much math required for the basic understanding of things. It's all about the logic, really.


"Proof by induction" is a core mathematical concept for programmers to know.


Big O notation in general algorithm analysis, and in relation to standard collections (sorting, retrieval insertion and deletion)


For discrete math, here is an awesome set of 20 lectures from Arsdigita University. Each is about an hour and twenty minutes long.