On some level, programming and math are the same thing. Algebras are programming languages for exploring mathematical structures. They just execute in the head of mathematicians (or in their computerized tools).
Many mathy programming languages exist in different dimensions of mathiness. To
name a few: Haskell and/or F#, Lisp (specifically Clojure, in my opinion),
Julia, R, J, Forth and/or Factor, or PostScript (the language of many printers)
Logo, Erlang, etc. All mathy in different ways.
Any one -- Python or Clojure for example give you different sets of rules that you can use to manipulate the symbols of their language the same way different fields of mathematics give you different rules for manipulating the symbols of their language.
In general the better you are at understanding one the better you are at understanding the other.
They often collide more directly. Linear algebra is helpful in machine learning. Geometry and trig are helpful for ray tracing. Geometry is helpful for understanding multidimensional arrays in programming languages. Social sites like Facebook use graph theoretical algorithms to manage and mine their data for big bucks. The mathematical forumla of Bayes theorem figures prominently in many machine learning applications but also rationality, artificial intelligence, statistics, etc. You get the idea.
Most programming languages have a built in notion of a set which is fundamentally identical to the mathemtical concept of a set with the further restriction that the only types of objects you can put in a set are values of that language's data types and you have to refer to the null set as something else like nil or null.
Unless you're using Haskell (one of the most mathy of programming languages, being based directly on the mathematical field of Category Theory and having it's own official category called "Hask") where you have to understand something like the Maybe monad or the Either Monad or the List monad (and why that's largely equivalent to either of the others) in order to even think of not having a value. Of course understanding all of that is easier if you happen to understand what the mathematical concept of monad is. Which you probably don't unless you are a Category Theorist (or recreational Haskell dabbler).
With a deeper understanding of math you can more easily grok the power, elgance, grace and healing powers of things like Haskell and Lisp.
You need at least some understanding of basic math concepts to understand things like algorithmic complexity (i.e. "Big O" notation, amortized analysis, etc). Without this level of understanding you're in for a bad time trying to write anything more than a trivial program operating on a trivial data set.
It goes on. There's a lot to learn. But that's a big part of what I love about computer science. I can consume as much of the literature and concepts and ideas out there as I can as fast as I can and I will never run out of new things to learn, and on top of that, there's an ever expanding frontier full of new discoveries to make.
Anyway, none of this directly addresses your actual question which unfortunately I have no frame of reference for, but it's what I would want to know if I had a son who was interested in programming. And something I wish I understood earlier in my journey as a programmer.
Edited to add: And if I did run out of math/comp sci stuff somehow, it all translates to physics, cosmology, etc! :)
Many mathy programming languages exist in different dimensions of mathiness. To name a few: Haskell and/or F#, Lisp (specifically Clojure, in my opinion), Julia, R, J, Forth and/or Factor, or PostScript (the language of many printers) Logo, Erlang, etc. All mathy in different ways.
Any one -- Python or Clojure for example give you different sets of rules that you can use to manipulate the symbols of their language the same way different fields of mathematics give you different rules for manipulating the symbols of their language.
In general the better you are at understanding one the better you are at understanding the other.
They often collide more directly. Linear algebra is helpful in machine learning. Geometry and trig are helpful for ray tracing. Geometry is helpful for understanding multidimensional arrays in programming languages. Social sites like Facebook use graph theoretical algorithms to manage and mine their data for big bucks. The mathematical forumla of Bayes theorem figures prominently in many machine learning applications but also rationality, artificial intelligence, statistics, etc. You get the idea.
Most programming languages have a built in notion of a set which is fundamentally identical to the mathemtical concept of a set with the further restriction that the only types of objects you can put in a set are values of that language's data types and you have to refer to the null set as something else like nil or null.
Unless you're using Haskell (one of the most mathy of programming languages, being based directly on the mathematical field of Category Theory and having it's own official category called "Hask") where you have to understand something like the Maybe monad or the Either Monad or the List monad (and why that's largely equivalent to either of the others) in order to even think of not having a value. Of course understanding all of that is easier if you happen to understand what the mathematical concept of monad is. Which you probably don't unless you are a Category Theorist (or recreational Haskell dabbler).
With a deeper understanding of math you can more easily grok the power, elgance, grace and healing powers of things like Haskell and Lisp.
You need at least some understanding of basic math concepts to understand things like algorithmic complexity (i.e. "Big O" notation, amortized analysis, etc). Without this level of understanding you're in for a bad time trying to write anything more than a trivial program operating on a trivial data set.
It goes on. There's a lot to learn. But that's a big part of what I love about computer science. I can consume as much of the literature and concepts and ideas out there as I can as fast as I can and I will never run out of new things to learn, and on top of that, there's an ever expanding frontier full of new discoveries to make.
Anyway, none of this directly addresses your actual question which unfortunately I have no frame of reference for, but it's what I would want to know if I had a son who was interested in programming. And something I wish I understood earlier in my journey as a programmer.
Edited to add: And if I did run out of math/comp sci stuff somehow, it all translates to physics, cosmology, etc! :)