Thursday, June 27, 2013

A Story of a Code Wars

It was on one day after my class had ended that I saw a couple of my friends sitting and talking, and I had decided to hang out with them.  Eventually their conversation moved onto the subject of some "Windward code wars" event, and they were trying to decide on members for a team.  Code wars?  "What is this?" I asked.  They answered something like, "Oh yeah, Daniel, you should be on the team.  I mean you're not too bad at this coding stuff right?"  Well it seemed to me to be some kind of team coding competition.  Competitive.  Coding.  With friends.  How could I not do it?  Competitive.  Competitive...

Maybe the idea of a coding competition doesn't sound that exciting to you, but I could already see the story lines going.  Clock ticking down, thirty minutes left.  You've got one last problem to solve, one last error to correct, and you've got to do it now.  You've got to put everything into that one shot, achieve your highest level of problem solving in that moment of pressure, and put it all together to type the code that will lead you to glory, to fame, to the title!..  And I laughed at myself as I always did.  How often does real life turn out like that?  Oh all the time you know.  All - the - time, haha.

I could already feel the nervous excitement building in me waiting for the event to start.  Although, I wouldn't be surprised if I was the only one who could say that.  We would be competing against 7 (I think it was 7 but maybe it was more) other teams from our school, with the top 2 going on to the grand finals.  Some of the people, you could tell, weren't that into the event.  Some (like one of my teammates, cough cough) were there just for the food.  Most of the others were probably there willing to put in a reasonable effort, you know, do what they could.  And then there was me.  "We're gonna win this, right?" I said, half joking, half serious.  Because I wanted to shoot for first.  Not first in our school.  First internationally.  First in the grand finals.  Why aim for less?  The way I saw it, if there was even the slightest glimmer of hope that we could reach the top, then why not go for it?  Why not give it our all?  If in the end you find out you couldn't do it, well then, you couldn't do it, but as long as you believe there's a chance, why not give it everything you've got?  And I could see that chance, that glimmer of hope.  So I let my anticipation grow as we waited to receive the message that would tell us our mission.  Still, I couldn't help but feel that I might have been the only one in the room that was seriously considering the possibility of getting 1st in the grand finals.

Tuesday, June 25, 2013

From the problem to an answer; The power of logic; Rule-based knowledge is insufficient

For the final project in my machine learning class, one of my classmates asked if I would help them out.  It was one of the few times I got to see how other students approached solving problems, as I usually did all my work by myself.  And, while I did expect it, it still bugged me.  It seemed the only questions they asked were, "How did other people do it?" and "How can we take the ideas or the code that other people have produced and use them here?" and so on.  I wanted to ask, "Why can't we solve the problem ourselves?"  Maybe if these people were undergrads who didn't care much about the subject I could understand better, but these people were Masters and Ph. D. students.  I can't help but feel that at that level, shouldn't your focus be on understanding the problem well enough to solve it yourself?

Now, I don't mean to say that I think that that way of thinking should only be expected of graduate students.  I've heard enough to know that many people approach their class problems the same way: look at related things in notes or the book, ask classmates or the professor for help, and/or look on the internet for similar problems.  Now, none of that is bad in general, but there seems to be such a significant focus on building off others' work or others' knowledge and applying the methods of others, so much so that I have to wonder if people forget how to solve problems from the problem itself.  They'll say, "Movement in a network?  Oh that's a network flow problem and there's all these methods to handle network flows," or "That problem is one of classifying, so I'm going to test out a bunch of different machine learning classifiers."  That kind of approach will work, but if you go from the problem to an answer, rather than searching various answers to find one that applies to your problem, you can take more advantage of the things that make your problem unique.