8
$\begingroup$

I've been a programmer for a good while now. Fairly experienced at a bit of math as far as coming up with algorithms and such but I am far far behind on understanding quite a deal of notation.

Here and there I run into an issue where someone will notify me that I've reinvented some piece of calculus, trig or some other fields. Occasionally this makes for some interesting code and all, but I've begun to think that I could very often avoid this by being able to read and write standard notation more fluently.

When it comes to this area, I'm honestly a complete newb. Are there any good introductions or resources that can help get me on a clear path to understanding?

I have some concept on simple functions, but not much. Tendency in study has been that I'll find myself too deep in something too complicated too quickly and forget everything.

  • For instance, to borrow from another open bounty at this time, I cannot read the following:

$\sum_{n=-\infty}^\infty J_n(x) J_{n+m}(x) = \delta(m)$

My mind is stuck in code, help me out of my cave! :)

  • 2
    @Alexei Averchenko You mean Dieudonné ;)2011-03-25

5 Answers 5

1

If you're also interested in the history of mathematical symbols (you probably don't, because you're in trouble now, but maybe you're curious...), you can read the classical book by F. Cajori, A History of Mathematical Notations.

  • 1
    @Garet: Also the book by Howson, *A Handbook of Terms used in Algebra and Analysis*, Cambridge University Press, is a nice one.2011-03-25
8

Concrete Mathematics: A Foundation for Computer Science by Graham, Knuth, and Patashnik

Here is a paragraph from the preface which talks about the purpose of the book:

"One of the present authors had embarked on a series of books called The Art of Computer Programming, and in writing the first volume he [Knuth] had found that there were mathematical tools missing from his repertoire; the mathematics he needed for a thorough, well-grounded understanding of computer programs was quite different from what he'd learned as a mathematics major in college. So he introduced a new course, teaching what he wished somebody had taught him."

The book goes over recurrence relations, sums (including a section on finite differences mentioned by @Alex), number theory, binomial coefficients, special numbers like Stirling numbers, Bernoulli numbers, and Fibonacci numbers, generating functions, probability, and asymptotics. I have read most of the book and it's fun reading and it has helped me a lot (though I am a math grad student trying to study number theory and a lot of this stuff is helpful there). The level is not too high (I know it's going to be easier for me as a math grad student but I still don't think it's at an incredibly high level). There are a lot of exercises, ranging from very easy to research problems. Solutions are in the back of the book for most of them. There are almost no errors in this book, which is good for someone learning on their own. Knuth pays people $2.56 for any error they find and it's sort of a prestige thing to get a check from Knuth. He also does the same sort of thing for "The Art of Computer Programming" and also for the computer write-up language he invented, TeX.

  • 1
    @Garet Yes, it is a math textbook so the point is learning the math, but it has a lot of notation as well.2011-03-29
8

As a programmer myself, I feel your pain in this.

I think it's safe to say, any well-seasoned programmer could pick up a reference book on just about any programming language in existence and write competently in that language in short order. Would you agree?

Math is like that, but it doesn't have the same flow and nuances as programming. Spoken languages have a certain rhythm to them; learning one Asian language makes it easier to pick up other Asian languages but not necessarily European languages.

Picking up a 'quick' introduction book to mathematical notation won't help you. You need experience, as you did with programming.

There are some good resources out there, but I can't think of a better resource than your own hard work and study. Find the best classwork-style books you can on the topics I list below, and you'll do just fine:

  • Linear Algebra (2010, MIT OCW)
  • single variable calculus (2010, MIT OCW)
  • multi-variable calculus (2010, MIT OCW)
  • differential equations (2010, MIT OCW)
  • introduction to algorithms (2005, MIT OCW)
    • This is a good one for CS types. They cover asymptotics as it relates to algorithm analysis & design: searching & sorting; binary trees, red/black trees, skip layer structures, bubble sort, etc. They spend a significant amount of time showing you how to analyze the run-time of an algorithm, its memory requirements, number of arithmetic operations or conditionals, etc.
  • The MIT OCW site has some other math classes for scientific computing, but the format is hard to follow; lots of chalk dust, hard to read what's written, etc.
  • boundary value problems and/or partial differential equations
    • This, or a book on signal processing will help you with the equation you quoted. Unless I'm mistaken, that is an eigenvector/eigenvalue problem.
  • graph theory
    • A must-have for any CS person
    • I recommend Applied Combinatorics by Alan Tucker. It's a pretty compact book, very readable, and most of it is easily approachable with little more than a decent understanding of Algebra.
  • probability & statistics (not the easy freshman/sophomore books)
    • I don't have a good book or lecture recommendation. The book I used in school was painful. I won't inflict that on you.
  • numerical analysis
    • This is a big one for CS people wanting math exposure
    • Two books I'll recommend (with a caveat):
      • Numerical Analysis by Burden & Faires
        • This book is incredibly readable until the algorithms start to involve many parameters/variables. The notation gets irritating near the end of the book.
        • [Most of?] the first 4 chapters should be easy to follow without a strong calculus background. Without exposure to ODEs, I recommend going through chapters 1-4, and 6-8; possibly chapter 9 (those come from the 7th edition. I don't know the layout of the latest edition)
      • Numerical Optimization by Nocedal & Wright
        • This is a good one to get later on when you're starting to feel more comfortable with this stuff. It's usually used as a graduate textbook.
      • Both of these books have pretty readable pseudo-code for all their algorithms

-Brian

  • 0
    Now being a few years later, these references definitely helped me greatly, much appreciated! 'Applied Combinatorics' and studying graph theory in general, along with differential equations and multi-variable calculus has led me to really enjoy the study of higher order manifolds outside of computer science =] This of course also ends up being rather kind to physics study.2014-06-13
3

http://dlmf.nist.gov/ is a good site for special functions, etc. Thus, for the given example, searching for J(x) in the search box quickly leads to the sections about Bessel functions.

  • 0
    Tha$n$ks, this $p$roved to be a very useful link, especially [Their notation section](http://dlmf.nist.gov/not).2011-03-30
1

Personally, I've found "Modern Algebra: An Introduction" by John Durbin a very interesting and accessible introduction to abstract math, including a lot of information about how to think of sets, functions and the like. I'm not sure if that's exactly what you're after, but I'd say it's at least worth a look.

If all you're interested in is learning about how mathematicians define functions and the notation that they use, a quick google search revealed two promising tutorials: This one which explains functions of a single variable, how to think about them, and different notations used to define them, and this one, a slideshow explaining functions of multiple variables.

  • 1
    Linear algebra is a must for a programmer, calculus would also be helpful (especially finite differences).2011-03-24