This is my first post on this forum and would like to say hi to everyone first. I know this sounds crazy but believe me it's been giving me creeps for such a long time. I've been studying software engineering for 2 years and done a bit of programming in several languages. But the problem is Maths.Yeah, I admit that I didn't do my maths homework in high school days ;). Recently, I've been reading a bit about voice recognition and face recognition. I'm sure ya guys have probably guessed it requires extensive amount of maths and all those weird characters are seriously giving me a headache. I just wanna ask ya guys opinions on what sort of maths that a computer programmer should master and I'd be much appreciated if any of you can point me out to a right direction. Tutorials or easy to follow-up articles would be great. Thanks everyone in advance and will be looking forward to any inputs from you guys.

This forum and others see this question a lot and you get answers that range from none - > everything.

So I will point out something that I have noticed, I have never studied and understood any maths that immediately looked useful, but I always seem to find that it is useful later.

[Note: I often started studing some area of maths because I thought it would be useful, but on actually obtaining some understanding I am normally impressed by its beauty but not its usefulness, that comes later]

Other than that, you are going to need lots and lots of maths for those two fields, lots of calculus , functional theory, vector analysis, fourier and Laue transform analysis, group theory, Baysean theory.
Just scratch the surface.

What you haven't really given us is any real idea of how deep your general maths is? Do you need to go from a good base into specialized areas or do you struggle to take the derivative of a one variable function ? If it is only high-school level (basic caculus etc)
you are really going to have to do the equivalent of about 2 year of a university maths course before you can contribute at the algorithm level. However, lots and lots of code can be improved by good software practice but there is both a status and communication problem level between you and the mathematically able co-works on that kind of project.

Wow thanks for pointing that out. It appears that just like you said I might gonna need to spend 2 years in a maths class. I never took Maths seriously damn wish I had. My basic maths skill might equivalent to a 10-year old kid. what a shame but I willing to read a lot of materials to improve my math skills. So, please provide me with any useful links and articles , tutorials and I'd be v much appreciated. It appears that without possessing a bit of those skills, I might not do very well in my career in a long run. Thanks everyone in advance.

Ok, for maths courses have a look at the MIT lecture page

The undergraduate stuff is a great revision guide and most of it I would expect anyone in the field to understand/know. This graduate stuff is a fantastic resource, anyone working with computational geometry will have a good grounding in a lot of this stuff. But there was lots here that I didn't understand as deeply when I went through it.

Note: Maths is not a "understand and know" subject. You should read a maths paper, and try to get an overview, then read it again and get a bit of a deeper understanding and again and again and each time you aim to get slightly more understanding.

However, it is particularly important to do the problems. If you don't do the problems you get a big gap between the stuff you think you know and the stuff you actually know.

Finally, I would like to say something upbeat but maths is hard, I think it is like playing a musical instrument, it requires serious work before you are competent.