7
$\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! :)

$\endgroup$
3
  • 2
    $\begingroup$ I think you should try picking up first year calculus textbook, it usually introduces concepts like sets, sequences, limits, series, derivatives, integrals etc. I'm afraid I can't suggest anything in particular except Diodonne's book that I haven't myself read :) $\endgroup$ Mar 25, 2011 at 2:12
  • $\begingroup$ @Alexei: Will look into this one way or another! My math is so rough around the edges >_<; $\endgroup$ Mar 25, 2011 at 4:29
  • 2
    $\begingroup$ @Alexei Averchenko You mean Dieudonné ;) $\endgroup$
    – Klaus
    Mar 25, 2011 at 13:15

5 Answers 5

8
+100
$\begingroup$

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

$\endgroup$
9
  • 3
    $\begingroup$ @Brian "Math doesn't have the same flow and nuances as programming."? What does that mean? $\endgroup$
    – Myself
    Mar 26, 2011 at 1:27
  • 2
    $\begingroup$ My point is it isn't just some set of axioms and rules. It IS a language with a logical flow or rhythm. If sentence words threw I order any did, I together a in then the sentence wouldn't be readable to you. The same thing is true in math. Just because you know the words and symbols doesn't mean you know how to string them together in a manner that is readable. $\endgroup$ Mar 26, 2011 at 7:25
  • 1
    $\begingroup$ or string the ideas together into a coherent and correct proof. $\endgroup$ Mar 26, 2011 at 7:30
  • 1
    $\begingroup$ @Brian Vandenberg: I think you make a good point, I hadn't realised the OP's point of view about math may be oversimplified in the way that you mean. As a programmer, apparently you understand the OP's concerns and desires better than I do. $\endgroup$
    – Myself
    Mar 26, 2011 at 11:40
  • 1
    $\begingroup$ @Brian - yes, I definitely relate to picking up languages. I'm basically out hunting for the 'spec' for the 'math framework'. Doing all manner of crazy things with numeric and representative values is all fine and good in code but sometimes very difficult for me to convey human to human. And thanks for the OpenCourseWare links, don't know why I didn't think to check there earlier. $\endgroup$ Mar 27, 2011 at 8:40
8
$\begingroup$

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.

$\endgroup$
3
  • 2
    $\begingroup$ This is a fantastic book. I highly recommend it. I respectfully disagree with Numth about how easy it is. I would describe it as not very technical but very deep. Reading it carefully will take a while. $\endgroup$
    – Sam Lisi
    Mar 25, 2011 at 18:08
  • $\begingroup$ This sounds like a great read, I will probably look into it. Only, it sounds more like learning math concepts than math notation, is that true? I realize they will be fairly hand in hand in most resources but the concepts aren't my weak point. $\endgroup$ Mar 28, 2011 at 6:38
  • 1
    $\begingroup$ @Garet Yes, it is a math textbook so the point is learning the math, but it has a lot of notation as well. $\endgroup$
    – GeoffDS
    Mar 29, 2011 at 19:38
3
$\begingroup$

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.

$\endgroup$
1
1
$\begingroup$

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.

$\endgroup$
5
  • $\begingroup$ Thanks. To clarify I'm talking generally about most of the things you end up needing MathML to express :) I can read very basic f(x)=... functions but not much past that (and not always even that >< ) Once you get deep into the sigma, lamda, nested functions and potatoes..I'm out of scope. I have most of the concepts if I could read them :) $\endgroup$ Mar 24, 2011 at 23:10
  • $\begingroup$ I'm not entirely sure if functions is all I'm looking for because I really don't know what all there is. I'm trying to 'formalize' my math skills. Thanks for the extra links, will check them out. $\endgroup$ Mar 24, 2011 at 23:22
  • 1
    $\begingroup$ Ah. That is a long process, and you will probably need to read more than one book on the subject, because if you haven't been introduced to the notation then you are probably unfamiliar with the concepts being represented. $\endgroup$ Mar 24, 2011 at 23:25
  • $\begingroup$ I've had a somewhat odd flow of education. I'm sure there are some concepts I don't know, but many I have used quite a bit writing 3D and physics, but I think my team mates are getting tired of translating to and from C++ for me. More than one book is fine though, any suggestions of the areas I need to cover? $\endgroup$ Mar 24, 2011 at 23:29
  • 1
    $\begingroup$ Linear algebra is a must for a programmer, calculus would also be helpful (especially finite differences). $\endgroup$ Mar 24, 2011 at 23:35
1
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ Oh I'm not in too much trouble lol, thanks for the reference. In my last place we all spoke the same language and it just seems it would make life easier for everyone. $\endgroup$ Mar 25, 2011 at 4:27
  • 1
    $\begingroup$ @Garet: Also the book by Howson, A Handbook of Terms used in Algebra and Analysis, Cambridge University Press, is a nice one. $\endgroup$
    – Pacciu
    Mar 25, 2011 at 12:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .