Being a nerd


My office-mate sent me this.

I used to code a lot since the age of 14, when the dot-com bubble was booming. There were many software design competitions for high school students. Some of them were poorly publicized which means it is easy to get good result after spending reasonable amount of time in development. That was good, spending 2-4 weeks and got one more line on my resume, together with some prices cash/hardwares/free internet service(p-net excluded)/free trips to other countries. The larger the potential reward, the more effort I put.

One of the most rewarding competition was the olympiad for informatics, a programming contest that contestants are expected to solve a number of problems (usually feasibility or optimizing problems) within a few hours. In this particular competitions, everyone tried to make their programs run as fast as possible (correctly, of course!). Since then, I would consider all possible ways to make my code run fast when I code. Eventually, I became a fairly good coder (yes yes yes, I know I know, efficient code is not sufficiently a good code)

In university, after getting an A from the automata class and the only A from the algorithm design class, which the prof covered tons of theoretical stuff like NP and Co-NP, fixed-parameter tractability, W12345-complete problems, it seemed to me that a theoretician is way more cooler than a coder. A theoretician can work in the cafeteria, or outdoor in a beautiful sunny day, and say, “nah… this is np-hard, don’t waste your time to get an efficient algorithm…." or “aahah! I find a way to decrease the runtime from O(logn) to O(loglogn) by using a randomized……." (without coding anything). I decided to be a theoretician.

However, sometimes later, I realized that being a theoretician, there was no way to explain what I am working on to my mum/dad/friends/colleagues/girls I adored, I decided to move away.

And after a series of unanticipated decisions, now I am working in an optimization lab, which my boss is the lab’s director. It is kind of cool. The comic above explains the whole thing. In reality there are tons of NP-hard problems, like playing the tetris and risk game. We still need to solve it even the theoretician tells you that it is NP-hard. The good thing for doing optimization is because it lies somewhere between theory and application. When we see a real-life problem, the first thing we usually do is to prove its hardness. If it is hard, then we can try to apply all the existing techniques and see if there is a good result.

Take the comic as an example. 1. given a whatever menu and a fixed amount of money, trying to order so that the sum is exactly the amount is a Hard problem, in a nerdy world people call this a Knapsack problem. 2. Finding a shortest path that visit all six other table exactly once is another Hard problem, nerdy people call this Traveling Salesman Problem. Yes! Every waiters/waitresses are tackling a class of hard problem every moment in computer science without realizing it!

So here you will see what the heck I am now working on, and what I will be working on in the coming four years.


5 回應 to “Being a nerd”

  1. Alex Says:

    Your post made me think of the torture I had when I took the Algorithm class in undergrad 🙂

    Just browse through Wikipedia and saw that designing a skilled Go-playing program is one of the open computer science problem:

    I guess it’s one of those NP-complete problems? Wondering if there’s a day when the Go-playing program will beat the strongest human being like the Deep Blue did to Kasparov 😛

  2. p Says:

    you finally read xkcd and you will love it as i do

  3. Says:

    > I decided to be a theoretician.
    > However, sometimes later, I realized that being a theoretician, there was no way to explain what I am working on to my mum/dad/friends/colleagues/girls I adored, I decided to move away.

    Shame on you!!!

    (I firmly believe that my brain is wired to do optimization at all time. It’s rather tiring. Ya know.)

  4. Says:

    Oh by the way, this is very funny.

    (but I’m not a nerd. Your nerds are just funny. okay.)

  5. Justin Says:

    Alex: The search space of Go is simply too big for any modern computer system. Deep blue beat the world champion becoz deep blue stores all previous game of kasparov, but kasparov hv no idea how Deep blue plays.

    P: xkcd is fantastic!

    雲:the worst thing is, being a theoretician, it is hard to tell the interviewer what the heck i am working on, hence get no chance to be recruited.

    btw, i do habitually optimize myself on nearly everything~~~


在下方填入你的資料或按右方圖示以社群網站登入: Logo

您的留言將使用 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )


您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: