

Math For Programmers - hhm
http://steve-yegge.blogspot.com/2006/03/math-for-programmers.html

======
Elfan
Another closely related post is Math Every Day:
<http://steve.yegge.googlepages.com/math-every-day>

Since most here are of a programing bent Project Euler (projecteuler.net) may
be of help in that quest.

------
dissenter
In a perfect world we would get rid of the CS major entirely and teach only
math. Students interested in a computer career would take a maths course with
a CS focus: very hard math and then data structures & algorithms, theory of
computation, and some electives. Good programming is all about good design,
and the way you learn good design is from spending a lot of time thinking
about really hard math.

When two programmers are skilled in mathematics, there's no disagreement on
the right way to do something since they both realize there _is_ only one
right way to do something. Minimal footprint, minimal dependencies, ease of
change, minimal variable names, canonical structures, efficient run
times...How can people have arguments over object-oriented programming
semantics? The very notion is absurd.

When math is taught well computer programming falls out of it as a corollary.
Courses like operating systems and programming languages are absolutely
ridiculous. A bright student can pick up all of the useful concepts in an
afternoon or two. At best they're excuses to have large programming projects.

The CS curriculum as designed is little more than a vocational school, one
whose difficulty is increasingly ratcheted down to get somebody, anybody, to
do the work that grows each year in complexity and tedium, owing to the
previous class of terrible coders it was necessary to graduate. The demands on
the software haven't gotten any more taxing, the existing codebase has just
managed to grow in size without any new intelligence being added to its
construction.

When you think about it, the CS curriculum, its practical side anyway, is
basically just a massive toolset designed to cope with the fact that its
students are bad at math. Constructs like object-oriented programming, they
start out with the assumption that you won't see the canonical way to do
something, and then everything that follows thereafter is damage control. How
to program at the lowest common denominator.

That books on design patterns exist, and are so widely celebrated, is perhaps
the most damning indictment of the field I can think of. If you can look at a
design pattern book and learn something, it means you are missing the strong
inner core of understanding that allows another, better designer to look at
the table of contents and go 'duh', and that inner core is absolutely
necessary to construct any sort of code that is going to work together with
other code in a completely seamless, mathematical sense.

The curriculum, and these techniques, are heavily influenced by economic
forces---this is not a secret. (Programmer churn, outsourcing, the never-
ending cutbacks in the cost center.) You need to have all your programmers
speaking the same language, and it's a lot easier to have them speaking OO
than math. And so you get a product that sucks, and we're all using an
internet in 2007 that still looks like a Model T, and everyone gets excited
when they can update a calendar without refreshing their browser. You've got
to be kidding me.

~~~
pg
_Good programming is all about good design, and the way you learn good design
is from spending a lot of time thinking about really hard math._

An interesting idea, but empirically false. Design sense is a necessary
condition for being a good hacker, but not a sufficient one. As for the second
half, I agree one can learn about design from studying math, but most of the
people I know with a great sense of design didn't acquire it that way.

If you said "A sense of design is a big component of being a good programmer,
and you can learn a lot about design by studying math," you'd be right.

------
raju
A good post, and the comments mention some good looking books. Any other
suggestions from fellow hackers for math learning books? I have perused
MathWorld (<http://mathworld.wolfram.com/>) but it would be nice to have a
book ...

~~~
almost
I'm currently slowly working my way through Concrete Mathematics by Ronald L.
Graham, Donald E. Knuth, and Oren Patashnik.

It's basically an expanded version of the first bit of Knuth's Art Of Computer
Programming. I've found it really fascinating and a lot of fun so far even if
it is a bit slow going for me.

~~~
Elfan
How quickly have you been able to move through Concrete Mathematics? It looks
like the sort of thing you might be able to do 1-2 problems a day.

~~~
gms
It depends on how much time you devote to it...but the nice thing about that
book is that each chapter's exercises are broken up into "Warmup exercises",
"Homework exercises", "Exam questions", and "Research problems". It's still
well worth working through it though - the authors are shockingly competent.

