Why is single value Calculus on his list of things that every programmer should know? People learn it early because of how important it is to the hard sciences, but it isn't particularly important to computer science. I would definitely move it down to the list of specific applications that you can learn if you need it.
I would also be inclined to have basic probability theory join combinatorics for the simple reason that the two subjects are so closely related that you tend to learn about them together. However statistics should remain a specific application of mathematics.
If you ever plan on doing anything with machine learning, you will need statistics and basic calculus. Well, you do if you want to progress in understanding beyond the "use someone else's library and hope it gives me a magic answer" phase.
Besides, calculus is one of the crown jewels of mankind's intellectual achievement. Not knowing any calculus ought to be considered on par with not knowing anything about the theory of evolution, or that the Earth orbits the Sun.
Yes, there is no doubt that calculus is very useful and a great achievement. Yes, I think it is wonderful for people to learn Calculus. Yes, I have learned Calculus, in fact I've even taught the subject.
However I don't think that Calculus is applicable to most programmers. For many programmers it is important, and that is why I suggested it be moved to the application specific list. But more programmers will get more value from, say, basic combinatorics than from Calculus.
Calculus is very useful in CS. Many CS papers use it, for explaining algorithms that have a discrete implementation, for example (some algorithms for finding edges in images for example), or for probability stuff.
i think OP might be thinking along the lines of, "how many working programmers need to know or use calculus in their day jobs?" sure, CS researchers working with physical medium like robotics or computer vision need to use calculus, but the millions of people writing code to shuffle data back-and-forth between sources (which is lots of programming jobs) don't need to know a single bit of calculus
That is exactly what I was thinking. I do not deny that there are many specific areas where Calculus is useful in programming. However most working programmers won't encounter them.
"I could theoretically develop a solution within a day, but I have no idea what you are talking about!"
I hope such programmers make sure that they can work on the next twitter and such things and don't have to implement solutions for financial controllers and the like.
Well, there is definitely a strong distinction between "programmer" (a trade) and "computer scientist".
I'd argue that beyond arithmetic and maybe a basic understanding of functions (e.g. f(x)), most "programmers" need to know very little math. But they also tend to produce shoddy, inefficient code and look at problems as "moving bits around".
Computer Scientists on the other hand need to have spent some time understanding the theory of computation. Calculus is one way of computing things, so is lambda calculus, and turing machines, and formal grammars, various algebras like regular languages, etc. Slinging code is just another way of computing things to a Computer Scientist.
Given this, most typical programming trade jobs are approached by Computer Scientists as a computation problem (or at least an application of a computation theory) vs. just hauling electrons about. This gets you something both qualitatively different in their code output as well as quantitatively different.
I would also be inclined to have basic probability theory join combinatorics for the simple reason that the two subjects are so closely related that you tend to learn about them together. However statistics should remain a specific application of mathematics.
Otherwise a good list.