views:

1357

answers:

14

Possible Duplicates:
How much mathematics and physics should a programmer know?
What are the core mathematical concepts a good developer should know?

I would like to study mathematics to be a better programmer (Web Developer) but which maths should I study e.g. Algebra, Calculus, Discrete Math etc?

I plan to work with Algorithms and Data Structures in the Future.

+12  A: 

Discrete Math is really good for programmers. That's the class that includes logic, big-O notation, counting, etc.

Here's the book I used... I can recommend it most highly. This is the 4th edition, so it's a dollar used rather than $105 new:

http://www.amazon.com/Discrete-Combinatorial-Mathematics-Applied-Introduction/dp/0201199122

Mark Harrison
A: 

Algorithm Design by Kleinberg & Tardos

Algorithm Design Manual by Steven Skiena

are the two best algorithm books you'll ever need, in my opinion.

Programming Pearls is also an awesome book for more problem solving, etc.

mjsabby
+2  A: 

I suggest you read Gödel, Escher, Bach by Hofstadter as he presents a lot of hard subjects in a more accessible way than textbooks normally do.

Note that many concepts are rather unintuitive!

Thorbjørn Ravn Andersen
A: 

Geometry if you plan on doing any sort of graphics (graphs, custom controls, etc.)

Lambda Calculus if you're feeling particularly bored.

Cameron MacFarland
+5  A: 

Algebra is a must for anyone aiming to be good at mathematics but for a CS student, discrete mathematics is a must. For the sake of algorithm analysis, you should study statistics along with differential equations and calculus. Also if you intend to study DSP, Fourier analysis is a must.

6pack kid
he wants to be a web developer. can u please tell us which part of maths would be helpful for web developer? i'm curious to know.
calvin
@calvin: Cartesian Algebra can help the OP understand how databases work and unless he is planning to be a UI developer, he will greatly benefit from this.
6pack kid
@calvin: And btw, the OP has expressed his interest in DS and algorithms as well, not just web development.
6pack kid
+11  A: 

This is a decidedly vague question, but if pushed

  1. Boolean Algebra. Of all the math courses I ever did understanding boolean logic stands out as by far the most useful. Just formally knowing the basics, such as NOT A AND NOT B == NOT(A OR B) will get you far. This is the one math subject that justifies the question

  2. Linear Algebra is surprisingly useful too. I've done a considerable amount of 3D work so that is essential there, but it pops up all over the place to some degree.

  3. Statistics. Everyone should have some grasp of basic stats

And finally one off the wall - Fractal algebra. Partly because it's just fun, but also because understanding what turbulence is and knowing to reach for a Perlin noise function or similar when otherwise you might just use white noise is a major win.

Cruachan
+8  A: 

Set theory is useful for understanding operations such as SQL and LINQ.

Brian Rasmussen
To understand LINQ better, I would also choose Lambdas
Kb
+2  A: 

I think knowledge of Probability and Statistics is a must in every field of computer, including software development. Sooner or later, a developer needs to profile his/her program and analyze the statistical results and then this knowledge comes really essential.

Here you can find a good text-book on this topic.

Amir Moghimi
+4  A: 

Even if you plan to never go outside the realm of algorithms and data structures, some math is really useful.

Discrete maths and number theory is a must imho. An entry level (linear) algebra class is always useful. As noted above, algebra pops up everywhere. Statistics is a must no matter what you intend to do(within CS). Calculus, well, nice to have, but I would prioritize the discrete, statistics, number theory and algebra first(in that order).

All in all, most entry level math classes are probably good to have. Then you can build upon that later if you find you like it and/or need it. It's great that you already are thinking about math. Too many underestimate the usefulness of mathematics.

triktae
Of course, to understand statistics, calculus is a big help. Virtually all of mathematics ends up intertwined eventually.
woodchips
+2  A: 

It sounds as though you already know that all programmers, web developers or otherwise, could benefit from giving their brains a bit of a maths work out. Studying maths is unlikely to inform your hands-on-technical knowledge but it will refine your logical thinking skills.

I'd agree with Mark Harrison on studying Discrete Maths, a great subject encompassing a lot of concepts used in computer science. I'd second the book that Mark recommends - its actually the one that I used in my undergraduate studies. It was pretty good back then and such textbooks generally improve through subsequent editions.

Discrete Maths is a big topic however, and its very difficult to work one's way through such a meaty textbook. One way of jumpstarting your studies could be via a book of Discrete Maths puzzles with solutions. (I have this book and its written in an engaging and fun style). Work through the puzzles and if you get stuck then explore the new concepts in greater depth using the Grimaldi book.

All programmers will benefit from studying Algorithms too. I stumbled across some video lectures from an MIT course on Algorithms. I learnt a lot from these!

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/CourseHome/index.htm

Best of Luck!

BeeBand
+1  A: 

Matrix math and Linear Algabra to do better animations and graphics transformation

and Lambda calculus to be a better programmer in:
Perl Lambdas
Python Lanbdas
LINQ (.Net)
Closures (Java)
Scheme, Lisp
Php Closure and Lambdas
Ruby

Kb
A: 

Hi; I think maths in general is quite important as I think it helps you think in a structured and logical way that would help you if you want to be a developer. For the time being I am finding anll the maths, calculus and also statistics very useful. I am currently doing a Masters in Biometrics and all the years of learning maths and statistics if truely proving very helpful. Regards Shivam

Shivam
+1  A: 

Statistics

The ability to collect, analyze and present data to others is a skill that you can always use whether you're a programmer or you move on to other things like management. I currently develop software, and in the past hardware, that is always very speed/performance critical. When debugging and looking for bottlenecks, it is easy to point fingers and make wild assumptions. When you have data to back your argument, it is easy to prove your point.

Just a few of the cases where I have used statistics:

  • determining data flow volumes to aid in making hardware/IT purchase decisions for new sites
  • analyzing lab and fields results to determine precision and accuracy of equipment
  • estimating project time-frames based on prototyping figures
  • showing the performance benefits of certain software configuration changes

You don't need to be able to do high-level calculus to utilize statistics. You just need to understand, and then apply the concepts. It helps to know how to use a few tools too, like Excel or R, so that you don't have to roll your own scripts.

Dr. Watson