Page 1 of 2 [ 20 posts ]  Go to page 1, 2  Next

Arran
Deinonychus
Deinonychus

User avatar

Joined: 20 Nov 2012
Gender: Male
Posts: 375

10 Feb 2013, 7:43 am

There seems to be a common belief that anybody who develops software has to be very good at maths. I'm quite critical of this belief because very little in the way of advanced traditional topics like calculus and trigonometry is required by the vast majority of software developers. Neither do have to be able to prove theorems from scratch. A small amount of software for scientific applications might use such knowledge but business software rarely requires traditional maths higher than GCSE level algebra and numeracy. Some set theory is required to understand databases but one doesn't have to take an A Level to learn it. Low level programming like device drivers and embedded systems requires one to think in hexadecimal and binary but this doesn't feature on the A Level syllabus.

A friend with AS works as a software developer and only has a C grade maths GCSE. He excels at at certain types of 'recreational' maths and logic problems and has acquired a solid knowledge of error correcting codes. However, he is completely lost with traditional A Level topics like trigonometric identities or integration by parts.

What mathematical topics are required for software developers and which are rarely used? Is excellence in traditional topics overrated? Are schools and colleges teaching too much of the 'wrong' material?



Kurgan
Veteran
Veteran

User avatar

Joined: 6 Apr 2012
Age: 35
Gender: Male
Posts: 4,132
Location: Scandinavia

10 Feb 2013, 8:46 am

Knowledge of matrices, trigonometry and boolean algebra has helped me a lot when programming,



BTDT
Veteran
Veteran

User avatar

Joined: 26 Jul 2010
Age: 61
Gender: Female
Posts: 7,370

10 Feb 2013, 9:53 am

The difficulty is that no school know the "right material" to each.

30 years ago, how many schools knew anything about modern web and computer technology used today? Few students have the luxury of working for just 5 or 10 years and retiring if nobody needs the expertise they learned in school.

Instead of trying to predict the future, many top schools try to give you a fundamental background and the tools necessary to learn new stuff as it comes along.



ModusPonens
Veteran
Veteran

User avatar

Joined: 1 Jan 2013
Age: 41
Gender: Male
Posts: 715

10 Feb 2013, 9:58 am

One of the basic things a software programmer should know is numerical analysis, at least to some degree. My numerical analysis teacher said that one of the reasons that the american space station crashed was because of a simple error in the software that has to do with numerical analysis and error propagation. Error propagation is sometimes counterintuitive and thus should be studied to know when it's possible to make a numerical aproximation without making a huge error.



Ancalagon
Veteran
Veteran

User avatar

Joined: 25 Dec 2007
Age: 45
Gender: Male
Posts: 2,302

10 Feb 2013, 10:41 am

It depends on what you mean by 'good at math'. If you mean able to remember every trig identity and integrate by parts, then no, they don't need to be good at it. If you mean being able to think through a problem carefully and exactly, like they would need to to do a proof, then they really do. I'd suspect that anyone having trouble with basic algebra would have problems with programming, because they probably are having problems with manipulating simple expressions or with the concept of a variable, or something like that.

Some parts of math are sometimes directly applicable to programming, such as statistics, group theory, number theory, and graph theory. Any 3D graphics programming is going to use at least trig and geometry a lot, and technically, all algorithms are mathematical objects. Combinatorics and basic discrete math is good too.

With all that said, there are lots of things that can be programmed well with very little mathematical knowledge.


_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton


TallyMan
Veteran
Veteran

User avatar

Joined: 30 Mar 2008
Gender: Male
Posts: 40,061

10 Feb 2013, 10:58 am

I've been a software developer for thirty years. Everything from games to business applications to educational software to mathematical models and simulations. I use algebra a lot and to a lesser extent (but indispensable) are geometry, trigonometry and statistical analysis. Newtonian physics is important too if doing mathematical models or game simulations for things like projectile trajectories.

Even something as simple as drawing an analogue clock on a computer screen showing the hour and minute fingers (as lines), minute marks and 5 minute marks and the numerals 1 to 12 requires a good amount of algebra, geometry and trigonometry to calculate the X and Y coordinates to draw from / to. An ability to transform algebraic expressions is absolutely essential.

I couldn't have written much of my software without a solid background in mathematics. All the stuff I learned for CSE maths was worthless in the real world of programming (despite having a grade 1). The traditional maths I subsequently learned at 'O' level I use every day, the maths at 'A' level is useful sometimes too but I rarely use any of the more obscure maths I learned at university.

Probably horses for courses... the more advanced maths you know the more sophisticated software you can write.


_________________
I've left WP indefinitely.


ruveyn
Veteran
Veteran

User avatar

Joined: 21 Sep 2008
Age: 88
Gender: Male
Posts: 31,502
Location: New Jersey

10 Feb 2013, 11:45 am

Kurgan wrote:
Knowledge of matrices, trigonometry and boolean algebra has helped me a lot when programming,


Boolean algebra, especially.

ruveyn



Kurgan
Veteran
Veteran

User avatar

Joined: 6 Apr 2012
Age: 35
Gender: Male
Posts: 4,132
Location: Scandinavia

10 Feb 2013, 12:42 pm

ruveyn wrote:
Kurgan wrote:
Knowledge of matrices, trigonometry and boolean algebra has helped me a lot when programming,


Boolean algebra, especially.

ruveyn


Correct. Without boolean algebra, one would have to use a sh!tload of copy-paste code and workarounds to make something that actually depends on user inputs. :)



Robdemanc
Veteran
Veteran

User avatar

Joined: 30 May 2010
Age: 47
Gender: Male
Posts: 2,872
Location: England

10 Feb 2013, 4:13 pm

When I studied computing we had to learn:

Set Theory
Propositional Logic
Vectors
Boolean Algebra



Moriel
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 1 Feb 2013
Age: 26
Gender: Female
Posts: 47
Location: California

10 Feb 2013, 5:24 pm

Arran wrote:
A friend with AS works as a software developer and only has a C grade maths GCSE. He excels at at certain types of 'recreational' maths and logic problems and has acquired a solid knowledge of error correcting codes. However, he is completely lost with traditional A Level topics like trigonometric identities or integration by parts.

What mathematical topics are required for software developers and which are rarely used? Is excellence in traditional topics overrated? Are schools and colleges teaching too much of the 'wrong' material?


Your friend sounds pretty much like my husband, who is a self diagnosed Asperger and a great software engineer working for one of the giants in Silicon Valley.

The answer is both yes and no. You don't need to be a good mathematician to become a good software developer (although the late Dijkstra said computer science is the most difficult branch of applied maths).

Besides algebra, geometry, statistics and calculus, you do need specific knowledge such as topics from discrete maths and combinatorics, at least if you want a Bachelor or a Master degree in computer science. Algorithm analysis sometimes requires pretty hardcore math (if anyone is interested something like a million dollars are awaiting for someone who can provide a formal proof that P= NP or P!= NP) but if you're planning to work in projects that don't require a lot of advanced maths, then you just have to pass the tests at school and that's it.

As long as your logic is flawless and your coding skills are above average you will be fine :)


_________________
Me: NT (English is not my native language)
Son: 5 yrs-old diagnosed with PDD-NOS and LKS
Husband: Undiagnosed Asperger's


LupaLuna
Veteran
Veteran

User avatar

Joined: 14 Jan 2013
Age: 53
Gender: Male
Posts: 1,551
Location: tri-cities WA

11 Feb 2013, 3:09 am

I don't know if this works for everybody. I am a self learner and learn by application and have an addiction to technology as a motivation. When I was 12 years old back in 1983. I got a computer for Christmas. It's was a TRS-80 CoCo (wish I could have gotten a C64) and it was one of those system that booted up into BASIC. That day, I started learning to program a computer for the first time in my life. My first programming language of course was BASIC. Anyways. My point of this story is after about 6 months of learning to program in BASIC. I had learned far far more(had to) about calculus and trigonometry then I could ever learn in high school.

So you might ask. Do you need to know advance math for being a computer programmer? Yes! I think about 85% of the time you will need to use advance math. But does that mean you should take advance math classes before getting into programming? It depends. I myself learned the math while learning programming because the math was being applied to what I was doing. Like I said. This worked for me but it may not work for you.



Arran
Deinonychus
Deinonychus

User avatar

Joined: 20 Nov 2012
Gender: Male
Posts: 375

11 Feb 2013, 2:35 pm

Ancalagon wrote:
If you mean being able to think through a problem carefully and exactly, like they would need to to do a proof, then they really do. I'd suspect that anyone having trouble with basic algebra would have problems with programming, because they probably are having problems with manipulating simple expressions or with the concept of a variable, or something like that.


I have wondered from time to time if a programmer who has mastered GCSE level algebra and is very good at Sudoko has a similar mathematical ability for programming as a programmer who has an A grade maths A Level. The ability to think through a problem carefully and logically is what really matters rather than the specific knowledge of A Level topics.

Quote:
Some parts of math are sometimes directly applicable to programming, such as statistics, group theory, number theory, and graph theory. Any 3D graphics programming is going to use at least trig and geometry a lot, and technically, all algorithms are mathematical objects. Combinatorics and basic discrete math is good too.


Moriel wrote:
Besides algebra, geometry, statistics and calculus, you do need specific knowledge such as topics from discrete maths and combinatorics, at least if you want a Bachelor or a Master degree in computer science. Algorithm analysis sometimes requires pretty hardcore math (if anyone is interested something like a million dollars are awaiting for someone who can provide a formal proof that P= NP or P!= NP) but if you're planning to work in projects that don't require a lot of advanced maths, then you just have to pass the tests at school and that's it.


3D graphics is the area of programming where a knowledge and expertise of trigonometry is required.

I have been saying for several years that discrete math is often more useful for software developers than continuous math is but the British education system has been slow to include it in the curriculum. The A Level now has decision papers in addition to the traditional pure, mechanics, and statistics but not all colleges offer them.



Ancalagon
Veteran
Veteran

User avatar

Joined: 25 Dec 2007
Age: 45
Gender: Male
Posts: 2,302

11 Feb 2013, 2:44 pm

Arran wrote:
I have wondered from time to time if a programmer who has mastered GCSE level algebra and is very good at Sudoko has a similar mathematical ability for programming as a programmer who has an A grade maths A Level.

A levels and GCSE are British terms, right? I have no idea what they mean specifically.


_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton


ScrewyWabbit
Veteran
Veteran

User avatar

Joined: 8 Oct 2008
Gender: Male
Posts: 1,157

11 Feb 2013, 5:22 pm

Ancalagon wrote:
Arran wrote:
I have wondered from time to time if a programmer who has mastered GCSE level algebra and is very good at Sudoko has a similar mathematical ability for programming as a programmer who has an A grade maths A Level.

A levels and GCSE are British terms, right? I have no idea what they mean specifically.


I think it really depends on the types of programs you'll be writing or the domain in which you'll be writing programs. Graphics and especially 3-D graphics uses a lot of linear algebra, for instance. Programming in general is boolean algebra, set theory to some degree, and to some degree combinations / permutations. Numerical analysis is useful perhaps but it depends on the type of programming you'll be doing - but since its a lot of approximating the results to math problems rather than directly solving them symbolically (or approximating when there is no way to directly solve them symbolically) again it depends. But I've been working as a programmer, mostly in financial services, for close to 18 years, and have rarely, for instance, ever used calculus or trigonometry in my work.



Moriel
Tufted Titmouse
Tufted Titmouse

User avatar

Joined: 1 Feb 2013
Age: 26
Gender: Female
Posts: 47
Location: California

11 Feb 2013, 6:46 pm

Arran wrote:
I have wondered from time to time if a programmer who has mastered GCSE level algebra and is very good at Sudoko has a similar mathematical ability for programming as a programmer who has an A grade maths A Level.


I think people who excel at logical thinking can -in theory- be quite good at "A level maths" if they really wanted to. But since they probably have restricted interests -asperger's traits- they just want to code, and don't care enough to ace topics such as "complicated maths". On the other hand, I've met awesome mathematicians who are very "discrete programmers", usually so perfectionists that never get the job done in time.

Anyway, I think most "A level companies" in Silicon Valley want software engineers with degrees in comp. Sci. AND that besides are good programmers. They want someone who meets both items. I don't think they care about grades for software engineering, though. My husband is recruiting ppl right now.


_________________
Me: NT (English is not my native language)
Son: 5 yrs-old diagnosed with PDD-NOS and LKS
Husband: Undiagnosed Asperger's


JBlitzen
Deinonychus
Deinonychus

User avatar

Joined: 10 Oct 2012
Gender: Male
Posts: 364
Location: Rochester, NY

12 Feb 2013, 4:02 am

I'm a senior software developer.

Last month I had a problem where I wanted to visually present color palette information for an image.

I wanted something slicker than a simple series of colored boxes in somewhat random order.

There were some neat 2D representations but they required color balancing by hue, so they were really presenting a false palette.

I knew logically that colors are 3-coordinate pieces of information, and mapping 3 coordinates to a 2-coordinate plane for 2D representation is basically impossible without some tradeoffs.

But it seemed like a circular/polar representation would allow a little more than 2 coordinates.

I came up with this representation to try and help me figure out the exact limit of what I could do:

Image

Now, clearly that has more than just 2 pieces of information in it per dot. For instance, walking around the circle sees three different elements rise and lower. So from a binary standpoint you've got three digits of information, plus the presence of a dot itself, so really 4. Of course, that's 2 in decimal, so maybe that somehow works out to be 2 dimensions. But it seems to be 3 dimensions of actual data, provided that the dimensions have certain limitations. More like 2 and a half dimensions, then.

And the problem, of course, is that there are only visible positions for coordinate sets for which at least one coordinate is EITHER 0 or 16. So on that image you can represent a piece of information containing two numbers each anywhere from 0 to 16, plus a third number being in the set {0,16}, PLUS the order of those numbers.

But there's no place for (3,8,8), or any other fuzzy coord.

This was very illuminating to me, and showed that a spherical representation would be necessary to properly handle the third number.

So instead I went with a hue-ordered colored-box display.

But in the process I gained an UNDERSTANDING of where the logical barriers were to my original desire, and thus what possibilities I could reasonably consider.

A programmer doesn't need to be able to do that, because programmers aren't required to understand what they're doing.

But a software developer is, and so they do need to be able to do it.

Did this involve high level math? No. Have I ever used high level math? Nothing I couldn't ask an expert to explain.

But in many senses the concept of high level math is less about complexity or difficulty than it is about the ability to apply mathematical concepts to abstract problems.

(Incidentally, should you choose a polar representation for a certain task, you will need some trigonometry to properly map grid coordinates to it)