Math Every Day
steve.yegge.googlepages.com
steve.yegge.googlepages.com
There's a reason hackers tend not to be good at 'high school math' - it's incredibly dull. 90% of what most of us did in class consists of essentially running code, the stuff hackers expect the machine to do for us (so we can concentrate on the real problem.)
I think solving mathematical education for the general population is incredibly hard, I wish Paul Lockhart (http://www.maa.org/devlin/LockhartsLament.pdf, http://news.ycombinator.com/item?id=256176) all the best in his efforts. But I think solving mathematical education for hackers ought to be a little easier. We are eminently comfortable with symbolic languages (consistent, testable ones - I'm not sure if many mathematical notations can make the same claim), and we love problem solving. You'd have thought we'd have a hard time not becoming good at math.
Does anyone have any suggestions? How about a textbook where the methods and proofs are expressed in code, for a start?
Unfortunately, though I've not gone through one of the so labelled Math XXXX for CS Majors style classes, I feel a little worried about this approach. It might garner interest initially, but if you're not eventually writing things down using math notation and reasoning at that level then you'll be doing math with a crutch forever.
Mathematical notations are not consistent or testable across any significant body. Most authors abuse notation every chance they get ("syntax sugar", maybe) though the good ones are conscientious about this. The difference is that Math is fundamentally a human language. It exists not to be computed directly but to inspire our non-linear brains to jump to the proper conclusions while laying down a map that (hopefully) outlines some perfectly "consistent" method for getting there.
(Consistent is in quotes because Gödel and so forth. Read the comments at the end of the second chapter of the Jaynes book online for free.)
Computer code is increasingly necessary in anything resembling a practical application of math. I'd suggest that it's as important for an (ugh) applied mathematician as the language of math itself, but I would never think that it could be practiced to the exclusion of the other.
Sure: pique some interest by showing how really cool things can be done with computers that abuse fundamental mathematical things. Do it with graphics or show infinite sum approximations, whatever you like. In the end, your students better be able to at least recognize the mathspeak for what they're doing though. Otherwise you're crippling them even as you inspire.
*linked from http://news.ycombinator.com/item?id=862686
One of the problems I always had with math textbooks was that you had to read them as a narrative rather than using them as a reference to dip in and out of. The reason being that most examples or formulas would use symbols defined earlier in the text without bothering to restate their meaning.
So looking up a simple formula would turn into a multi-hour trawl back through the textbook trying to find definitions of all the symbols they were using.
If only mathematicians - and textbook authors, especially - were taught to use meaningful variable names!
On a related note, if anyone does know of a good math reference (esp. for calculus!) which makes an effort to keep it's formulas self-contained, I'd love to hear about it!
1) If your contact with maths is simply reading a formula out of a book and implementing it then long variable names might be fine. If you are actually trying to do a calculation then long variable names are terrible on two fronts: firstly because they take so much longer to write out, secondly because the additional characters obscure the 'moving parts' of an equation. I'd much prefer looking at "a(b+c) = ab + ac" vs "first_variable * (second_variable + third_variable) = first_variable * second_variable + first_variable * third_variable"
2) I don't really understand what you mean by meaningful variable names. Perhaps if you are using mathematics to model a specific thing then they make sense: eg number_of_people = number_of_males + number_of_females. However, mathematics as a discipline isn't about modeling specific situations, there is no "mathematics for groups of people" for instance. Instead mathematics deals with manipulating abstract ideas - do abstract ideas really have meaningful names?
If you do have some idea then perhaps you could explain how you would define a derivative with meaningful names? The best I can come up with is:
derivative(some_function(variable)) = limit small_change approaches 0 (some_function(variable + small_change) - some_function(variable)) / small_change
Does that really assist cognition more than the standard:
f'(t) = lim h->0 (f(t+h)-f(t))/h ?
btw, can you see from this example what I mean about the extra wordiness hiding the parts? (Maybe I've just used the standard notation for so long the words mess up my pattern matching.)
He was a true genius in all senses of the word !
There are people out there working on problems that are either solved, easily mappable to a solved problem, or proven impossible. Don't be one of those people. Don't be one of many to reinvent http://en.wikipedia.org/wiki/Dynamic_programming in a new problem domain. Don't learn http://pmbook.ce.cmu.edu/ the hard way.
I just don't know how he does it. All the other programmers have years of experience programming but they don't write as good or insightful as him.
I want Steve Yeggie to write a book!
Stupid example. I live in a single family house. When we moved in, the yards (front/back) were full of weeds. By weeding for 1/2 an hour a week, I cleaned the front out of weeds. What was insurmountable without chemical assistance turned into a few minutes of digging in dirt (which I enjoy). Now I have a weed free lawn, which I enjoy with my family all the time (grass stains are bad, but we get this dandelion thing that stains permanently at the slightest touch).
I became a foosball whiz (ok, I've seen real whizzes, and I'm not one, but . . . let's say a 'local whiz') by practicing 15-30 minutes a day.
The only real trick is working out a way to want to engage in that activity in a sufficiently 'serious' way on a regular basis. Which is why I have a nice lawn and am good at foosball rather than, say, being good at a musical instrument.
After edit: I'll accept the response below to what I first wrote. But I wouldn't call Von Neumann "paranoid" in the setting of his times, which included the conquest of his native country.