Fog Creek Software
Discussion Board




A programmer who is good at programming and Math

What percentage of developers are good at programming and hard core math, meaning calculus, 3D algorithms, advanced data structures?
How many people have jobs where they use hardcore Math in programming?Do you think these guys add more value to companies who work in the domain related to Math, then just business programmers, who only program?

DP
Friday, April 30, 2004


Warning: I have a math degree

Most programmers are good at math.

Most 'hardcore' math is just keeping track of multiple variavbles in your head and knowing how to transform them to get a result.

What is programming?

In my experience, the good programmers who aren't into math are usually into music or chess, and would be good at math if they tried ...

(What is music?  What is chess? etc.)

Matt H.
Friday, April 30, 2004

I used to work for a Navy research lab where I supported a $13 million state of the art digital processing system that read Navy sonar data and visualized it.  I also took some computer graphics grad school classes.

How many people could put together a transformation matrix for a 3-D transform?  Raise your hands if you know how to use the Java AffineTransform class.

It's something I'm interested in, but I think us math-friendly folks are the exception, even among programmers.

5v3n
Friday, April 30, 2004

I am former Law student, who turned into a programmer because of the love of the game. I know nothing about maths because of the lack of practice, I used to play chess with my father who is a former Angolan champion and for music, Pearl Jam and lately Placebo. But I can't play an instrument, though.

RP
Friday, April 30, 2004

I began programming when I was 14 in C++ (after a month or so of Javascript). I wasn't very good at math, in fact I was sitting on a D.

Now, 4 years later, I'm doing two full year maths classes in my final year (Maths Studies and Specialist Maths). The work is hard, but I find I don't have to put in a great deal of study to keep my A grades in both classes. I have been able to pick up all the new concepts quickly, and when stuck on anything I know instictively when to seek help. I have no doubt this is because of my (although rather limited) programming knowledge.

While I am a bit of a Jack of all Trades in regards to languages now, it's because of this I've been able to breeze through these maths courses so easily.

Just an opinion from someone still learning.

PS: At the moment we're learning about Iterations and the Mandlebrot set - where does that get used? Does anyone know of any real life examples of using the mandlebrot set?

Nerd
Friday, April 30, 2004

Re 3D transforms, my hand is down, but I'm reaching for Foley and Van Damm....

Peter Ibbotson
Friday, April 30, 2004

Any programmer who works for a for-profit corporation and follows their accounting practices would have to be good at "hard core math" just to make sense of the lies. :)

m
Friday, April 30, 2004

Another math major here.  Can't make decent money unless you're PhD level, I wasn't that good.  So I program day in and day out.

As for using it, it's been so long I 'd be challenged to get the derivative of x^2, or the integral of x/2.

Snotnose
Friday, April 30, 2004

I used to, early on in my CS career but now math has almost nothing to do with what I'm currently in. However having done 20 years of graphics and number crunching algorhythms (geometric modelling, sparse matrices, finite elements). I find the other stuff trivially easy. The other stuff pays just as well though.

old_timer
Friday, April 30, 2004

"PS: At the moment we're learning about Iterations and the Mandlebrot set - where does that get used? Does anyone know of any real life examples of using the mandlebrot set?"

I don't know about the Mandelbrot set itself, but the whole 'imaginary plane' stuff seems to have practical applications. Iterated Function Systems (see, specifically, the work of Barnsley) seem to have application in image compression (at least), although wavelets may be superior. L-Systems (The Algorithmic Beauty of Plants by Prusinkiewicz, Lindenmayer) are also cool--I will never look at a plant again without seeing an L-System.

Disclaimer: I'm not really a maths guy, just a hobbyist and voracious reader.

Ron Porter
Friday, April 30, 2004

Is everyone British?  I've never heard of the usage of the word "maths" before.  I thought everyone was suffering from English as a Second Language.  I had to look it up online to see that the word 'maths' is chiefly a British word.

Elephant
Friday, April 30, 2004

Actually I think it's "math" that is strictly an American word, while most of everybody else uses "mathS" as short for mathematicS.

NoName
Friday, April 30, 2004

Yeah, I understand how the word was derived, I'd just never seen it before.  Guess it's just the "Ugly American" in me rearing it's ugly head.

Elephant
Friday, April 30, 2004

Nor British nor European. Continental European.

RP
Friday, April 30, 2004

This is not flamebait...  I honestly - in my heart of hearts - believe that no one should be allowed to program a computer unless he/she has a degree in Math and a degree in Philosophy.  Formal training in these fields gives you:

(1) The DISCIPLINE to think rationally.  It's something that everyone claims to be able to do, but until you get into hardcore logic, you really don't have the rigor necessary to think truly rationally.

(2) The ability to think and model ABSTRACTLY.  This is at the heart of mathematics.  Every second of every hour spent in higher mathematics is an exercise in throwing out unnecessary details of a problem and working with an abstract skeleton of axioms and objects.  It frightens me how many developers can't grasp OO.  I mean, if you ask them what implementation inheritance is, they'll tell you - and a certain number can even tell you how a particular compiler handles it - but most just don't have the knack of pasting data and methods together in a coherent fashion.  Freakin' functions floating out in space; data flying around everywhere!

P.S.
And for the billionth time, calculus is a friggin' freshman intro course; it IS NOT HARDCORE!!!

anon
Friday, April 30, 2004

This is flamebait.  Because, after all, with a handle like mine, it's all I post. ;)

One dangerous thing I saw play out in college was the person who was good in math but didn't want to be a teacher and didn't want to be a PhD who was told, by their high school guidance counseler, that they should go into computer science.  And a good number of those people did poorly because math skills do not directly translate to programming skills.

Calculus is great at deceiving people into liking Math.  It's fun, the practical applications jump out at you, and it has absolutely no bearing on the sort of things that real math folks get into.

The big thing about most forms of engineering and sciences is that they all require you to be able to manipulate large structures in your head and reason rationally.  Understanding rings and fields and manifold surfaces is not a prerequisite, being able to think is.

I'd say that a programmer who isn't comfortable with the math directly applicable to programming, which, at Flamebait University (not to be confused with Crazy Go Nuts University) was one class and a bunch of bits in random other classes, plus basic secondary/primary maths, is screwed.  But that's considerably less than a math degree, that's just the theoretical basis for what they cover in computer science.

The point is, we all come to knowlege and skill in different ways.  Does it matter if you learned how to solve problems by getting two extra degrees or if, instead, you learned to solve problems by building a cannon that shoots square shells just to see if somebody could do it?

Flamebait Sr.
Friday, April 30, 2004

For me, writing a program was basically writing a proof.
You constructed subproofs and lemmas, and tie them
together at the end to prove the assertion.  Programming is
pretty much the same thing.

As for advanced numerical methods and such, I tend
to make use of much more "number-theory" type approaches
than numerical methods, but this is because I don't do
scientific programming these days.  Earlier in my career,
when I was doing serious graphics programming, I used
a lot of numerical methods.  Friends of mine on Wall
Street use lots of PDEs in modeling various exotic
financial products.

x
Friday, April 30, 2004

My undergrad degree was in electrical engineering. I got pretty good at laplace, fourier, and Z transforms, math in the complex plane (directly applies to any kind of electromagnetic field), differential equations out the wazoo, etc. It was hard at first, but not what I'd consider "hard core" mathematics; I didn't need to prove anything (except to prove that was I was doing would work), but just apply the techniques to practical problems.

Now, 12 years later, I'd be lucky to remember how to do a simple derivative. I had I think one year where the DSP stuff was useful, and since then it's just been programming.

I think the engineering background has definiately helped; I didn't learn anything really about how to think in the math classes, but I learned TONS in the actual engineering classes.

I really think the answer to this question reflects more on the person doing the answering than on any really specific answer. People can learn how to think like a programmer through many paths, and some approaches will work for some people, but not for others.

Chris Tavares
Friday, April 30, 2004

well, if you prove this simple theorem, you are probably worthy of being a good programmer:

x^n + y^n = z^n

has no non-zero integer solutions when n>2.

botluck
Friday, April 30, 2004

that's amusing.

Fermat's last theorm, or Fermat's conjecture.  Proved true for all n from 3 to 150,000, but not for the general case.  Nary a mathematician in history that hasn't worked on the problem.

Elephant
Friday, April 30, 2004

Oh, I've just come up with a clever little proof for that, but I don't think there's enough room here to write it out completely...  I'll post it to a fresh thread later.  Check back.

Fermat
Friday, April 30, 2004

I have a degree in Math but I am not employed as a programmer. Many people I work with have math or engineering degrees, some with PhDs.  I think those who are curious and appreciate challenges are drawn to the two fields.

Tom Vu
Friday, April 30, 2004

The Mandlebrot set has plenty of applications.

Imaginary numbers not only have infinite real-world applications but are the basis of all engineering work.

Dennis Atkins
Saturday, May 01, 2004

Dear Elephant,
                      I was under the impression that the general proof of Fermat's last theorem has come about. The University of Munich gave the money away, so they must have thought so.

Stephen Jones
Saturday, May 01, 2004


I don't have much math beyond some work in calculus. (Which I wasn't very good at, anyway.)

My lack of advanced math skills have never really held me back, but I work in the corporate arena and not in a engineering role. For my work, being skilled in business practices, methods and even office politics is more applicable than being able to perform vector analysis or multiple integration.

That being said...I would never suggest to anyone that much isn't necessary. Anything that forces you to think, hone your logic skills and solve complex problems is a good thing for any developer.

Whether or not they ever use the mathematics is really irrelevant. It's the experience of learning the math that counts.

But to go as far as what anon said about requiring mathematics degrees is utter hogwash and complete nonsense. Plenty of people have learned how to solve problems, think in an abstract fashion and use their logic skills outside of math or philosophy degrees.

Mark Hoffman
Saturday, May 01, 2004


"That being said...I would never suggest to anyone that much isn't necessary"

um..should be "math", not "much".

Mark Hoffman
Saturday, May 01, 2004

*  Recent Topics

*  Fog Creek Home