From: Phillip Gawlowski Date: 2010-11-20T07:32:11+09:00 Subject: Re: Where to start from? On Fri, Nov 19, 2010 at 9:38 PM, Josh Cheek wrote: > I have an incredibly difficult time imagining a web developer being asked > either of these questions. The second one in particular, if you had that > question, would you think "I better go find a web developer"? Or even more > generally "a programmer"? If you are able to word it like that, then you are > probably already ahead of them in solving it. And if you aren't, then this > isn't a compelling example. The first one is likely, once you shift the ERP to a web app. The second one: not so much, but then again, Electrical Engineering uses specialized software. >> 3) SQL's JOIN (set theory). >> What's the intersection of the sets {1,2,3,5,6} and {1,2,4,6}? >> >> > Okay, I guess I should clarify that I am mostly thinking about Calculus and > Linear Algebra and Statistics. I'm not saying there is no merit to Discrete > Math. Though I don't think it is anywhere near as difficult as school makes > it, and I still think it is less relevant than academics consider it, and I > expect you will figure almost all of that stuff out when you need it -- if > you need it. It's easier than school makes it, definitely. But set theory is pretty basic, and like all basic things, it is not that difficult, but still highly important. Fortunately, a good 3 hours in Maths 101 will teach you the basics well enough that you won't ever have to look up any laws related to set theory. > In my discrete math course, they taught prefix, postfix, infix. I understood > it well enough to walk through their drawings of trees and get the right > answer on my test. Then in Data Structures, I was given code for a Binary > Search Tree, looked at the delete function (recursive), couldn't comprehend > it, sat down and worked out what it was doing, and said "holy crap!". And > when told to print the tree, wrote my own version. I didn't comprehend that > it was the same as what I learned in Discrete Math, I just thought about it > for a while, tried putting it after the traverse child code, it didn't work. > I thought about why not, realized it needed to go between them. Then, > several days after I finished. I was reflecting on it, and finally realized > the placement of the print statements was just prefix, postfix, infix > traversal. I had solved it without math. Of course, I can't see myself ever > needing to code my own BST, so even then, not sure how relevant this example > would have been for the pro-math side. You solved it without maths, but it took you much longer. Algorithms of any kind are the bread and butter of mathematics, and once you grok maths, any algorithm becomes easy (outside of cryptography, anyway). Instead of days, it'd taken you just a few hours *at most*. Of course, that assumes were taught actual mathematics, and not computing (Wolfram had an interesting TED Talk on teaching maths using computers, instead of teaching computing at school). > Another example: I have never used De Morgan's laws  outside of homework > problems, but I've been taught them at least 6 times (yes, I just stopped > and counted). I've been taught vectorial maths 5 times sofar, and I expect a few more lessons on that. But be that as it may, maths is the universal language of any hard science endeavour, and just worthwhile to know, if only to make an educated guess on whether or not a certain solution works, or makes sense. To look at our set theory in the context of JOINs: You can go ahead and try all possible iterations until you strike gold, or you can, up front, define the exact result you need by formulating it in mathematical logic. It's TDD before you write a single line of code, more or less. -- Phillip Gawlowski Though the folk I have met, (Ah, how soon!) they forget When I've moved on to some other place, There may be one or two, When I've played and passed through, Who'll remember my song or my face.