Back at school (tech college) my instructor mentioned that all we need to know is add, subtract, multiply, and divide. Any other formulas from there the person requesting the program would give us the formula. Granted this is a tech college where the focus is a person writing business applications, not the next Quake. But to this day the fanciest thing I had to do was a mod().
When I was in High School, I was a complete art freak (painting, sketching, etc) with a passion for computer programming and absolutely no interest in Math which I subsequently dropped as a subject on.
When it came time to develop my first 3D Engine, letâs just say that missing all that Math class was a bit of a bummer. I had to teach myself Trig to get the job done. Needless to say, I managed in the true spirit of Coding proving that programmers are smart enough to learn whatever math they need just in time to attack the problem at hand.
They teach math all wrong in school. Way, WAY wrong.
This rings a bell - I wonder how much easier (or at least, interesting, and therefore motivating) it would have been if it had been anchored to reality rather than presented as a bunch of abstract problems?
BTW Right-brain/Left-brain is apparently a myth that grew up around some experiments involving people whose brains had been split in half (literally). Not did the results not apply to a normal brain, it is an example of how the popular press remains decades behind science.
I wonder how much easier (or at least, interesting, and therefore motivating) it would have been if it had been anchored to reality rather than presented as a bunch of abstract problems?
But, to bring this back to the origional question, if someone is not interested in abstract problems, are they going to be a competent programmer?
If you look at work done over the last 300-400 years in approximating pi (for example) you will see how the idea of creating a working AND beautiful / elegant solution for something in maths is pretty analogous to the idea of coding.
Sure most of the work in programming is the daily bread and butter hum-drum but that work is not why people become programmers. If you LIKE (or LOVE) programming youâll quite likely LIKE or LOVE maths as well once you get beyond the simple calculational operations (that a decent computer program can do for you anyway because good mathematicians / programmers worked out how to en-code them).
Jeff, I find most of your articles shallow. This is yet another one. Its almost like u donât understand the deeper meaning of things around you. I wonât add in another comment abt the specifics of this article, 'cause ppl above have just hammered you. Its amazing tht ppl still flock to read your trash.
This was a good âarticleâ if you will. Iâm glad I read it.
Anyhow I have my Bachelorâs & Masterâs in Computer Science and my MATH is horrible, but I can program very well. It all depends on the person and getting the job done in my book. I agree there are many different ways to get the job done some less/more efficient than others but at the end of the day its a matter of making the customer happy.
What the hell are you all damn woodpeckers talking about?!? :))
Have you programmers never tried to read The Art of Computer Programming (TAOCP) by Donald E. Knuth.
Really⌠From my point of view if you manage to solve most of the exercises in that book(s) you can assume that you know the mathematical tools sometimes necessary in programming.
A distinction between programming and computer science is necessary for this discussion. Historical quotes might confuse the topic a little bit because of how far the two have diverged in the modern day. And then even within programming there is such huge variation in the nature of endeavors. Programming might mean writing macros in VBA to one person while it means writing numerical approximations to QED problems in C to another.
Since the usage of programming is so vague, hard and fast rules about programmers seem futile at best.
I donât think the correlation Dijkstra was referring to between math and programming has anything to do with actually using math in your programs. Rather itâs that the logical problem solving techniques and skills that a mathematician uses are the same as those that a programmer uses.
Thereâs plenty of math thatâs useful or even necessary. The problem is that we think of it as computer science rather than math. Like others have said - probability, set theory, number theory, graph theory, formal languages, automata theory, logic, etc. (and of course the basics like arithmetic and elementary algebra and coordinate geometry).
And other branches of mathematics are less useful, unless youâre specifically dealing with them: calculus, real and complex analysis, abstract algebra, non-Euclidean geometry, etc.
But this just goes to show you that to even ask the question is kind of silly. To try to divide math into CS math and non-CS math is kind of pointless.
I ordered this book about Art and programming, and wound up needing to get a minor in mathematics to understand it. It really helped my coding, though.
Back in my day, people believed math skills were required for any kind of scientific pursuit, biology, chemistry, computers. It is probably true, but it discourages those kids who may not excel at computational math (doing math in their head), but can understand higher math concepts given the crutch of a calculator.
I remember my mom telling me I couldnât be a scientist since I wasnât good at math.
There are lots of different types of programmers needed in this world. We need far more than we can currently supply with our educational program. To fill this need, we need to open up the field even to people who failed calculus. There are some types of coding you can do without knowing higher math. Basically, math skills shouldnât be a requirement - it discourages far too many young people from pursuing computer science and/or software engineering. You probably do need math for computer science, but not so much for software engineering.
You need some math to be a project manager, but itâs not complicated math.
To follow up - reading more of the comments - I do think you need algebra and problem-solving skills - like the dreaded word problem is a perfect example of understanding a problem (requirements) and having to go through logical steps to come up with an answer (the solution).
I was thinking of math as either really high math, taught on college-level to math majors - beyond algebra and geometry. Or I was thinking of it was simple calculations. I know for a fact that you canât trust me to subtract double-digit numbers in my head. But I can solve a logic puzzle. Itâs the logic puzzle solving bit of the left brain that makes me good at what I do, not the ability (or in my case, inability) to calculate/compute sums quickly.
I guess itâs like reading. Some people read slower than others. All programmers need to be able to read. But if you arenât a speed-reader, you donât get disqualified from the job.
This statement is highly inaccurate. Logic is a topic within math, and creativity is needed in proof construction, a core skill. @Delmania Logic is a branch of Philosophy, not math. Study your history please.
I had a Math instructor once (many years ago) who loved disproving mathematical formulas to the class using Logic. He wanted us to know that the two are very different creatures. It would be more fair to say(although still incorrect) that math is a subset of Logic.
Math requires a certain different set of skills from programming, but problem solving is the same in both. Ability in most modern math classes does not necessarily correlate with problem solving. Thereâs an immense similarity in sitting and finding an approach to a problem, but they general diverge in the actual approach taken, and how one goes about implementing approaches.
I have done both math and programming competitions, and the sorts of things you try are far different. For example, in a programming competition, your first question is Does brute force work? while in a math competition, it is never the best option. In both youâre trying to accomplish some task with minimal effort, and you have to ponder how to do it, but with a computer to do busywork, it changes your entire attitude towards a problem. Now, competitions may not apply directly to the fields as a whole, but it seems like a revealing example.
Basically, any good programmer that has trouble with math is probably having trouble with grasping the concepts for whatever reason, but theyâre still amazing problem solvers, and if they did understand math concepts, they could use them to amazing effect. Similarly, good mathematicians are also good problem solvers, and if they managed to grasp programming concepts, they could use them to great effect as well.
That said, there are of course domains where the concepts intersect, and youâd better know the basic concepts for both.
You seem to be refuting things that Dijkstra did not say (at least in this quote).
Dijkstra did not say You need to learn math in order to program he said a mathematical inclination is important. This to me implies a character trait, not a set of skills.