Slashdot Mirror


TopCoder, Math, and Game Programming

reiners writes "DevX.com has an interesting interview with David Arthur (dgarthur), the 2003 TopCoder Collegiate Challenge winner. Arthur discusses many interesting topics: the similarities between TopCoder problems and math problems, why TopCoder performance is positively correlated with 'real-life' programming performance, and why game programming is where the action is."

47 of 236 comments (clear)

  1. programming 3D rendering engine by stonebeat.org · · Score: 4, Interesting

    programming 3D rendering engine. that is where all the action is. i learned more about linear algebra while writting 3D rendering libraries, then i did during the course of my degree. :)

    1. Re:programming 3D rendering engine by RabidOverYou · · Score: 4, Funny

      I would rather have majored in Glass Chewing than Linear Algebra. Numerical Analysis was bad, but Linear Algebra ... ooh I get the shakes.

  2. beh by Anonymous Coward · · Score: 5, Funny
    game programming is where the action is
    Then why do I always have rendering operations rather than second dates in my pipeline?
  3. True "Top" Coders Dominate the "Bottom" Coders by Nova+Express · · Score: 4, Funny

    Top Coder: "What? This isn't done yet?"

    Bottom Coder: "No, your Code Mistressness!"

    Top Coder: "You pathetic little worm! Get back in there and code until your hands bleed!"

    Bottom Coder: "Right away your worshipfulness!"

    Expect to see more ads for "Dominatrix" pop up in Silicon Valley...

    --
    Lawrence Person (lawrencepersonh@gmailh.com (remove all "h"s to mail)

    http://www.lawrenceperson.com/

  4. Language of Choice by avdi · · Score: 4, Interesting

    I find it interesting that a math double-major, who's considering becoming a math professor, uses C++ as his language of choice, with Java coming second. Not Lisp, not Scheme, not Haskell - C++.

    I'm not sure what conclusion to draw from that fact, I just find it interesting.

    --

    --
    CPAN rules. - Guido van Rossum
    1. Re:Language of Choice by Lairdsville · · Score: 2, Interesting
      a math double-major, who's considering becoming a math professor, uses C++ as his language of choice

      A good friend of mine recently finished a PhD in Maths and decided to start his career in the IT industry. Having never done any computer science, he did a six month course in C++ and then a six month course in Java and found that Java was much easier for him. He said that he never felt that he fully understood C++, but he topped the class in Java. I am sure he could have done well in C++ if he had worked at it, but he has gone on to work as a very successful Java developer.

      I think the Language of choice depends on the context, and the conclusion I draw from these annecdotes is that Java is good for industry and C++ is good for academia.

    2. Re:Language of Choice by larry+bagina · · Score: 5, Funny
      TopCoder cofirms it: functional programming is dieing. You don't need to be Eliza to predict functional programming's future: functional programming is dieing. Scheme is the most endangered of them all, having suffocated under a deluge of ()s. It was auctioned off to gnu/emacs, anoter charnel house, with an equally precarious future. Induction proves that the downward spiral will continue until termination.

      Fact: functional programming is dead.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    3. Re:Language of Choice by zatz · · Score: 2, Informative

      TopCoder permits only Java, C++, and C#.

      -- a red

      --

      Java: the COBOL of the new millenium.
    4. Re:Language of Choice by g4dget · · Score: 2, Informative
      Fact: functional programming is dead.

      There seems to be a lot of life left in that corpse, given that Perl and Python have essentially become Lisp (lexical closures, dynamic typing, list comprehensions, etc.) and that O'CAML is thriving.

    5. Re:Language of Choice by White+Shadow · · Score: 4, Insightful

      Did you read why C++ is his language of choice? The reason he gives is because it's the language he has the most experience in. In fact, most of top ranked competitors use C++ (you have a choice between C++, C# and Java). My theory on this isn't that most of them think that C++ is a better language, it's just that most of the top competitors went through school when C++ or C was being taught so they know it the best. Most (but not all) of the top ranked coders are at the ends of their undergraduate careers or older.

    6. Re:Language of Choice by jgerman · · Score: 3, Interesting
      Kids aren't taught functional languages in college much anymore. You can go through all four years, get a degree and know very little about even imperative programming. Object Orienting caught on at schools when it was at the height of it's buzzword curve and hasn't let go yet.


      I'm sure I'm not the only one working in the industry that's had to deal with poorly educated fresh out of college employees. Kids that only know one langauge, and one way of doing things.
      OTOH I don't believe I learned much from college, it was the reading and coding I did on the side.


      I wish when kids chose CompSci as a major, the first thing they got was a copy of Knuth, Godel Escher and Bach, the Planiverse, and the Turing Omnibus. (There are obviously others I'm leaving out for instance Programming Pearls, Hackers, ext.) I think it would go a long way towards a better Comp Sci education.

      --
      I'm the big fish in the big pond bitch.
    7. Re:Language of Choice by sql*kitten · · Score: 2, Insightful

      I find it interesting that a math double-major, who's considering becoming a math professor, uses C++ as his language of choice, with Java coming second. Not Lisp, not Scheme, not Haskell - C++.

      Clever programmers use Lisp, Scheme and Haskell.

      Smart programmers use whatever language the market's hiring, and don't get caught up on language wars.

    8. Re:Language of Choice by zatz · · Score: 2, Insightful

      C++ is a terrible teaching language. A portable assembler that thinks it's an object system... what could be more confusing? Teaching systems programming is certainly apprpriate, but please, use C for that.

      --

      Java: the COBOL of the new millenium.
    9. Re:Language of Choice by swillden · · Score: 4, Insightful

      In theory, C++ would be the worst of the three in a timed contest--too much housekeeping.

      Absolute nonsense.

      If you know C++ well, and use the language effectively, there is very, very little housekeeping. My C++ code probably has less housekeeping code than typical Java code, because destructors are an immensely useful tool. Toss in auto_ptr, a couple of other smart pointer types and a few design guidelines and C++ is very good at allowing you to focus on the problem, not the tool.

      Plus, I never have to remember to call "close()".

      Java has an edge not in the area of housekeeping (and, as you mentioned, Java is unpleasantly verbose, particularly with respect to all of the casting that is often required) but in the area of libraries. This gap isn't as large as some might think, though, because (a) many of the Java libs are rather poorly designed and make you work much harder than you should have to and (b) there are some decent libraries around for C++.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    10. Re:Language of Choice by Multiple+Sanchez · · Score: 2, Interesting

      I find that LISP programmers tend to think more verbally than C++ programmers, who think more numerically. LISPies construct ideas verbally, parenthetically. C++ programmers think in a manner more closely in line with machines: operation, operation, operation. Am I making this up? In my C++/3D engine-type courses, the guys and occasional gals fit the compsci stereotype more closely: dungeons and dragons, late nights playing Quake. In my LISP courses, usually AI/GA/GP, there were a lot of guys/gals taking poetry minors.

      I might add that nearly all of the C++ guys were x86ers. Among the prefix notation/parenthetical set of students, there were a lot of school-of-Jobs fanatics and I-*heart*-Woz shirts.

      Or was I imagining it? Anyone else find this to be a reasonable thumbrule?

    11. Re:Language of Choice by zatz · · Score: 2, Insightful

      Personally I don't think physics is that confusing. And it's not a fair comparison; we have a bit more control over language design than the laws of nature :)

      If you read my post, I endorse C as a teaching language (although my more mathematically-inclined colleagues would doubtless prefer Lisp or Haskell). C++ doesn't model anything except itself, though. I've done a fair bit of development with it, and like Java, I mostly find it useful for the libraries. It's full of random gotchas, and doesn't possess the almost one-to-one mapping to machine instructions which C does.

      Unless you do a lot of embedded or systems programming, you may as well think of the computer as a virtual machine. It certainly is one to a user process. Most software spends all its time waiting for the user, so "slow" languages are fine.

      "C++: an octopus made by nailing extra legs onto a dog" -- Steve Taylor, 1998

      "I *made up* the term 'object-oriented,' and I can tell you I did *not* have C++ in mind." -- Alan Kay, one of the inventors/designers of Smalltalk

      --

      Java: the COBOL of the new millenium.
    12. Re:Language of Choice by Carnivorous+Carrot · · Score: 2, Interesting

      Ok, this "Topcoder" site should hire some of its own contestants to reprogram its site. Problems so far looking around:

      1. Little popup that puts up the red button to enter the competition areas has the bottom line (warning about DON'T CLOSE THIS WINDOW!) chopped off.

      2. Actual coding window when scrolling upward has graphic artifacts and you must highlight the scraggly area and dehighlight to make it look good.

      3. Went back later, window with red button hasn't gotten as far as displaying the red button (only displaying "Java stuff loading" or whatever. Half an hour and counting.

      And I'm not even looking for problems. They're leaping up and barfing in my face.

      --
      "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
  5. Real World vs. Top Coder... by Xerithane · · Score: 4, Insightful
    Uh, you are asking a student who has held an Internship. His points are fairly valid:
    • Test your code
    • Make it readable
    • Spend time designing

    Those 3 don't happen as much in the real world as one would hope to think. Very few companies do code reviews correctly, nor do most programmers spend enough time testing their algorithms.

    I would look at a Top Coder victor the same way I would look at someone who can answer trivia questions correctly. The experience is incredibly valuable, but I wouldn't say that they are parallel at all. Most of the questions and tests are biased against people who have experience doing competitions. A veteran programmer would probably perform 10x better in a real world environment, and is much more valuable than a TopCoder winner who is still in school... but I could be wrong.
    --
    Dacels Jewelers can't be trusted.
    1. Re:Real World vs. Top Coder... by targo · · Score: 2, Interesting

      I would look at a Top Coder victor the same way I would look at someone who can answer trivia questions correctly. The experience is incredibly valuable, but I wouldn't say that they are parallel at all. Most of the questions and tests are biased against people who have experience doing competitions. A veteran programmer would probably perform 10x better in a real world environment, and is much more valuable than a TopCoder winner who is still in school... but I could be wrong.

      Actually it's not as simple as that. In order to be successful in TopCoder competitions, one has to be a rather smart person (in fact the 2001 winner is "the smartest guy in the world"), with good analysis, generalization and abstraction skills, and above all, a quick thinker. The problems are not trivial to dissect, and time pressure is strong.
      So for a long term employment (3+ years), I would rather hire a young successful TopCoder participant (one can always gain experience but not smarts) than a regular but experienced guy.

    2. Re:Real World vs. Top Coder... by eglamkowski · · Score: 2, Insightful

      Unless it was a very challenging job (Like game development,

      Um, there is a HUGE amount of grunt coding in game programming. Coding the GUI, writing a script parser, or processing keyboard clicks ain't challenging. But you only need just so many programmers on a given project to write the graphics engine or the AI or do other "challenging" work. (well, of course the AI will absorb as many programmers as you want to throw at it, but for a game that will actually ship...).

      Having been a game programmer for five years, I have to say that Slashdotters seem to have some very strange ideas about game programming... :-p

      --
      Government IS the problem.
  6. Re:good thing by SamBeckett · · Score: 5, Insightful

    hehe you must have scored REALLY bad on the competitions to have this kind of attitude. From my experience, I have a relatively average score (~1400) and have nothing but the utmost respect for the true "top coders". Being fast is just one part of it, algorithm knoweldge and language mastery is a must-have to be competitive like these guys are.

  7. how about encryption? by qortra · · Score: 5, Interesting

    It really depends on how you define "action". Encryption seems to me to be even more exciting a field. It isn't as glamorous as game programming, but the math involved is amazingly interesting (advanced number theory, primality), and good encryption tends to last for longer than good game engines.

    3D rendering is not entirely about math (probably a lot more to do with studying the brain and how people generally interpret images that they see). Encryption however is ALL math. Anyhow, that's my 2 cents.

    1. Re:how about encryption? by plierhead · · Score: 4, Funny
      Hah, encryption, I spit in your face !

      Payroll processing is where the action is. COBOL rocks! And you'll score loadsa chicks.

      --

      [x] auto-moderate all posts by this user as insightful

    2. Re:how about encryption? by grazzy · · Score: 2, Funny

      and not just that! you have a raise every month!

  8. Why am I not surprised ... by 1in10 · · Score: 5, Funny

    Wow, someone who won top coder is saying it's a good indication of real world ability.

    In other news, Microsoft says Windows is the most reliable, and George Bush says America is the best.

  9. Translation... by Duncan3 · · Score: 4, Funny

    In other words he's smart enough to know even he can't get a job programming, and so it's a waste of his time to try.

    A friend of mine hired two AMERICAN programmers for 6$/hr last week. I told him he could get them for $4/hr in India, but he doesn't like remote workers.

    The party is over. Move along.

    --
    - Adam L. Beberg - The Cosm Project - http://www.mithral.com/
  10. David Arthur by Anonymous Coward · · Score: 2, Informative

    David went to my highschool, Upper Canada College (Canadian version of Exeter/Eton), and he was a couple grades below me.

    Sadly, he had the misfortune to be at the school while the Canadian High School Math champion was there so he didn't get much glory in the math department.

    He is a smart dude, but was incredibly socially inept :) i.e. No girlfriends. Maybe university has changed him now, I dunno.

    Anyways, he wrote a complete 3d FPS game in ~ grade 10 . He also crushed everyone in the Waterloo CS contests.

    1. Re:David Arthur by lars · · Score: 2, Insightful

      I agree; this thread is ridiculous and kind of sad. A lot of people confuse having social skills with fitting in. It is well known that people who are very intelligent also tend to have excellent social skills and a good sense of humour. If anything, too good -- that's the real reason they might not fit in so well. Both times I've met Dave I've found him to be outgoing and impossible not to get along with. Socially awkward is me or most of the fellow grad students and profs I work with.

  11. Re:good thing by Anonymous Coward · · Score: 3, Interesting

    Yup. There wasn't a challenge. I did them for awhile. When they used to pay for all competitions, I learned it was better to stay in the bottom ranks. There you could take a room on one question, the easiest because all you needed were language tricks. When it was just Java, this basically meant that you learned all of java.util and java.lang packages. Basically my strategy boiled down to this:

    1. Read the easy question.
    2. Recall the Java class/method that shortcutted the problem.
    3. Write 3-5 lines of code (not including the class and method header).
    4. Score near max points and be done before everyone else and sit for the rest of the round.
    5. Challenge round, slam the people that tried to finish as fast as you. Chances are these people made a mistake and if you knew the problem, you knew what to look for right away.

    Most of the time I'd also just open the last two questions so I knew what to expect if someone did finish them, but the bulk of the people in the lower rooms would never even get to finish them in the allotted time, if they did, you could almost always count on it being wrong. So long as I didn't answer the big questions and let my scores inflate, I never moved out of those rooms and I never saw a point in it. The only point I saw in getting to the higher rooms was to make the invitational. Yeah I'd love to win $100,000 but at 1 in 64 kids (back a year and a half), my odds weren't that good anyway even if I thought I was talented enough to win (which I know I'm not).

    This is not real world coding and I would NOT encourage colleges to become involved in Topcoder because most of their philosophies go directly against what professors are trying to instill in up and coming programmers. You are not encouraged to design, comment, test or even read the problem thoroughly in these competitions because it all costs you valuable points. Whether or not these are valuable skills in the real world, I'm still growing up and learning.

  12. nobody talks about the actual problems? by lingqi · · Score: 4, Interesting

    well after 69 comments (hehe), there has not been a SINGLE one discussing the competition problems, all three of which are quite interesting.

    especially the hard one, probably, because my mind is drawing a blank on how to have it implemented... (no i didn't cheat and look at the solution).

    heh, actually they go like this:

    *easy* - okay, i can think of a algorithm. probably not the fastest thing in the world, but it should work out.
    *medium* - have a haze of an idea on what an algorithm might look like. with enough caffine it MIGHT solidify.
    *hard* - at least I understand the problem, but curses on the restrictions of a binary tree =)... no idea on algorithm that would finish executing before the end of the universe. (granted, only 50 elements, so maybe it's possible brute-force)

    Damn; this is exactly how /. lowers productivity. making people spending way too much brain power on stuff that's completely unrelated and time consuming. heck; i might lose sleep over this.

    --

    My life in the land of the rising sun.

    1. Re:nobody talks about the actual problems? by cpeikert · · Score: 3, Interesting

      well after 69 comments (hehe), there has not been a SINGLE one discussing the competition problems, all three of which are quite interesting.

      I'll take a shot.

      Ironically, I find the "easiest" one the hardest. I can think of a brute-force O(n^4) algorithm, but it's not pretty.

      The medium problem seems to be straight-up dynamic programming.

      Sadly, the "hard" problem is also straight-up dynamic programming, and is well-known. It's very lame that they chose this problem -- I'm pretty sure it's in CLR (Cormen, Leiserson, Rivest "Introduction to Algorithms"), and it's definitely considered in many other sources.

      Overall, these questions don't seem to be testing for breadth of knowledge, or even ability to think creatively. They all have essentially cookie-cutter answers.

      Coding up correct answers under time pressure is another matter, of course. I give all the credit in the world to someone who can crank out the code and test out all the corner cases properly.

    2. Re:nobody talks about the actual problems? by White+Shadow · · Score: 2, Informative

      Actually, you're right, these problems weren't that hard. In fact, three of the four finalists finished all the problems in about 40 minutes.

      There was actually a problem (a switch died, then the backup switch died) during the final round and they had to cancel the match. The question here are actually a second batch of problems.

      The hard problem from the first back was a get the animals across the river problem. Given a set of up to 16 animals and what animals can't be placed on a boat together, find the minimum number of trips it takes to get all the animals across the river. Oh yeah, the animals also have weights and if the weight of the animals on the boat exceeds a certain threashold, you can't transport them.

    3. Re:nobody talks about the actual problems? by lingqi · · Score: 2, Interesting

      i don't think you need O(n^4) - though i must say, since it's limited to 50 nodes, even at n^4 it's pathetically small.

      anyway, I think it's probably faster to (for every node n)

      1) compile a list of nodes going out of n
      2) compile a list of nodes coming into n
      3) for every node m not associated to n (complement of (1)+(2), find its list nodes that it has relations with, and find the intersection of the sets
      4) profit!

      well, 250 points only, but i think the above should get you on your way at a lot less than O(n^4). unless i got some costs wrong for some of the operations (i am having doubts about the intersect).

      --

      My life in the land of the rising sun.

    4. Re:nobody talks about the actual problems? by White+Shadow · · Score: 2, Interesting

      Yeah, that's the problem. Except there is no farmer and the restriction on what animals can be left alone together only applied to the boat (so you could lave a bad combination on either shore).

      Oh, BTW, you get 8 seconds for your solution to run, so brute forcing all combinations would take way too long. In more concrete terms, this means you want something with a time complexity less than about 50 million.

    5. Re:nobody talks about the actual problems? by cpeikert · · Score: 3, Insightful

      Summarizing your algorithm: for every pair of nodes that are not connected, do the proper intersections of their in/out-neighborhoods. (Note however that the pair of nodes in the other corners must be checked for connectedness too.)

      "For every pair" => O(n^2)
      "intersect neighborhoods" => O(n log n)
      (by sorting the entries in the neighborhoods and comparing from there)
      But as for checking connectedness of pairs in the two intersections, that's again O(n^2).

      So we're back at O(n^4) (not to mention the work that goes into preventing double-counting of cycles that are found in several different ways).

      Which solution would you rather code up? :)

    6. Re:nobody talks about the actual problems? by lingqi · · Score: 2, Interesting

      Since you already have every pair of nodes that are not connected, checking for the connectedness of intersects should be a walk in the park beacuse you are checking against list the first. I don't think that's O(n^2). It's more like O(however many intersect pairs you got)...

      Unless the list of intersects (however many intersect pairs you got) is bound by n^2... hmmmmmmm...

      haha, alright. I concede. you see why I am only the rank of "armchair computer programming contest participant."

      p.s. I have to say, though, that the amount of connectedness amongst the nodes do tricky things - because if very few nodes are connected to eachother, that would give you a huge list to check previously (near n^2), but you would have nearly no neighbors, and vice versa. Even in the middle case (which I assume the worst), this should still limit the algorithm's O down. a little.

      or so my gut tells me. heh.

      --

      My life in the land of the rising sun.

  13. Topcoder by dmh20002 · · Score: 2, Interesting

    The top level guys competing in topcoder are some of the smartest guys you will ever meet. Whoever thinks they are a coder, go ahead and try a competition. Its free and they do it a couple of times a week. See if you can even get the easy problem right. I dare you.

    p.s. Topcoder also has the best Java client side applications going. Their competition arena application/applet is a masterpiece.

    no i don't work for them. Yes I have competed.

  14. competition paradigm by lingqi · · Score: 4, Insightful
    I personally think this is a better programming competition paradigm than TopCoder.

    in case people will probably not bother to click, it goes something like this:

    you have three days to do the programming task (72 hours), and you submit it via email. you can use whatever language you want, etc etc. here is an official quote:

    Programming should be about correctness and elegance, not about writing something in a hurry. Correctness is more and more important, for example in life-support systems and drive-by-wire automobiles, where there is no room for error.

    There is no room for error in this contest either. The first thing the judges will do is test the programs and eliminate any entry that does not give correct results on all tests. Besides, the task will be simple enough that 3 days will be enough time to write, debug, and do some tweaking on your program, and get a normal amount of sleep. It was already the case for the previous years, and we see no reason to change.

    the cool thing is this
    [for the 1st place] Finally, the contest judges agree to state at least once during the presentation of the awards that the winning team's programming language is "the programming tool of choice for discriminating hackers."

    [for 2nd place] The contest judges agree to state at least once during the presentation of the awards that the winning team's programming language is "a fine programming tool for many applications."

    [for special judges prize] The contest judges agree to state at least once during the presentation of the awards that the winning team is comprised of a group of "extremely cool hackers."

    anyway... the money isn't as good, but I like it much better. btw the winner for the 2001 one used haskell, and second place used Dylan, ha! eat my (shorts), Arthur. =)
    --

    My life in the land of the rising sun.

  15. Re:Kid Programmer by HoldenCaulfield · · Score: 2, Insightful

    hmm . . . with topcoder being a timed contest, where points are awarded dependent on speed, and the coding phase being 75 minutes for three questions, that quick and dirty serves a need? We're not talking large scale projects here . . .

    I had a competitor comment to me once that while lots of others don't mess with objects, he does, just because he likes the structure and makes his debugging easier, even for tournaments . . . most others skip them because it's a level of conceptualization that can be skipped . . . modular code doesn't serve much benefit in 75 minutes . . . (well, unless you're referring to STL . . . )

  16. Re:Kid Programmer by White+Shadow · · Score: 2, Insightful
    When are they goining to start teach good coding practices in school?
    They try to, but there just isn't enough time. Really, most after you take data structures (maybe a sophmore level class) you never get any formal programming training. Instead you move on to more specialized stuff like graphics or AI or theory or compilers or whatever.

    And really, should the university be responsible for teaching you that stuff? In my experience, the best way to become a better programmer is to program and have other (more experience) people examine your code and give you feedback, and to look and learn from other people's code. If you're smart, you learn very quickly how to program for "the real world" when put in a job environment.
  17. Occaml - Language of Choice for the Mathematicians by Taco+Cowboy · · Score: 2, Interesting



    Say what you want, but for the math gifted, most of them will code in Occaml, or one of the Meta Languages (ML), if they ever come across them.

    --
    Muchas Gracias, Señor Edward Snowden !
  18. Re:good thing by ErroneousBee · · Score: 5, Insightful
    hehe you must have scored REALLY bad on the competitions to have this kind of attitude.

    I did a 'sort of' competition thing (it was actually a study in how programmers program), and I found that the problem was nothing like what I meet in the real world:

    • The spec was really watertight, not 'Uh, make it show birthdays, and, uh, see if the users like it'.
    • There were no OSINTOTs or other gotchas like broken APIs or liscencing issues.
    • The spec didnt change halfway through the task.
    • No-one dumped a completely unrelated, but more urgent, task in my lap just as I was about to start coding.
    • QA didnt suddenly start bitching about a feature thats been in the product for years, but theyve only just noticed, and no-one uses anyway.
    • The problem was chosen for its elegant recursive solution. Most of my real world problems are solved by a tiny bit of iteration and masses of conditional logic/exception handling dealing with all the dumb things the user/system can get up to.

    In general, I suspect these competitions reflect academic computing, producing nice and small programs. The real world is more like Google's pagerank software, a simple idea, but complicated by all sorts of issues like Bloggs and Googlebombers.

    --
    **TODO** Steal someone elses sig.
  19. Re:Basis Transforms by Mooncaller · · Score: 2, Interesting

    If students were taught how to visualise the math they are suppose to be learning, they would pick it up much faster. You will find that ALL people who are good with math have a natural capability for visualizing the concepts. It is my firm belief that visualization technique can be taught. I have done just this while tutoring. I found Linear Algebra extremely easy because it was so visual.

  20. if only... by carrett · · Score: 2

    game programming is where it's at... it is of course the chicks. awwwwwwwwwwwww yeah, it's all about the cs babes.

    --
    I'm against picketing but I don't know how to show it.
  21. Re:good thing by jgerman · · Score: 2, Insightful

    change halfway through the task


    Wow you're being generous. My favorite is when it changes hourly.

    --
    I'm the big fish in the big pond bitch.
  22. Fascinating reading by Anonymous Coward · · Score: 5, Insightful

    I don't normally read SlashDot, but after a friend pointed out this post to me, I had to check it out. Having done so, I couldn't resist making a couple comments.

    "I find it interesting that a math double-major, who's considering becoming a math professor, uses C++"

    I don't see much use for computer programming at all in mathematics, except in applied areas that don't interest me. I learned C++ because it was ideal for game programming, and I learned Java because it was taught in college and used at the company where I worked.

    "Maybe there is some kind of speed math problem think tank that secretly controls the world around us"

    Amazingly enough, it is actually possible for certain people to do more than one thing, including math research and contests. For example, I once met this guy who could walk and talk at - get this - the same time. It was pretty crazy.

    "With looks like those... it's no surprise he has nothing better to do."

    Yeah, screw you too. At least I have better things to do than flame college students on SlashDot. In fact, I spend no more than two hours a week on TopCoder, often less. I almost never practice, and I have not competed very many times.

    "someone who won top coder is saying it's a good indication of real world ability"

    I believe I said that it is not completely irrelevant. That would be different. Since I did this interview for some internet thing that neither I nor my friends read, and since I am not even looking for a job right now, I didn't really have a vested interest.

    "(tenured math professor = job security)"
    "he's smart enough to know even he can't get a job programming"

    If you guys think it is easier to get and maintain a good programming job than it is to get and maintain a math professorship at, say, Harvard, you are very much mistaken.

    "So this guy is telling us he makes this for the money and he will become a math professor?"

    I believe I mentioned that money is no longer my primary reason for doing TopCoder. Furthermore, just because I choose to spend minimal time making lots of money given the opportunity, does not mean I can't live with a bad-paying job.

    "normally you do not *decide* to become a professor"

    Really? I actually think this is precisely what happens.

    "other serious, more difficult, competitions like the ACM"

    You don't know what you're talking about. Everybody in the TopCoder top 10 has done extremely well on some or all of the ACM, the IOI, the Putnam, and the IMO. Of these contests, I'd say the ACM is actually the most worthless (straightforward problems, missing constraints, ridiculous 3-person 1-computer dynamic, ridiculous 2-year limit).

    "Mr. TopCoder could very easily be a pro athlete. He sure answers questions like one."

    What do you want me to say? Maybe I should have answered questions like "Have you thought about how you want to apply your computer skills after graduation?" with "Actually, since I'm a super-genius, I thought I would show P != NP, and then maybe move on to the Riemann hypothesis, and then maybe I'd see if I could fly just by thinking really hard, like that dude in the Matrix". Certain questions will get lame answers every time.

    To those of you who aren't asses, good day.

    -- David Arthur

    1. Re:Fascinating reading by CognitivelyDistorted · · Score: 2, Interesting
      Hi, David. Congratulations on your win. Don't worry about Slashdotters, they're like this to everybody, out of envy. Hell, everyone who knows me considers me an excellent programmer, I'm not interested in contests, and I'm not an asshole, but I still felt urges to put you down. I'm just mature enough to recognize the source of those urges and suppress them.

      I'm sure you know that the skills you demonstrated in the contest are only a small part of the skills needed by a professional coder. I'm also pretty sure you'd make a great coder. On the other hand, based on what I've heard about you, I suspect you're too smart to be just a game programmer or something like that, and that better things are in store for you. Of course, coding is still a lot of fun, good preparation for management or research, and a decent profession. Whatever you decide to do, thanks for stopping by on Slashdot, and best wishes.