Блог пользователя mohmahkho

Автор mohmahkho, история, 5 лет назад, По-английски

Hi!

I'm a member of the ACM-ICPC community of my university. As this semester started, new students came to our university. The community of ACM-ICPC at my university is quite small. Consequently, we (me and my teammates) decided to advertise these competitions to newcomers and try to attract them. We're mainly focused on ACM-ICPC. I think that most people that are doing competitive programming, are doing it because they find it fun and also they enjoy solving problems (sounds true for me). Now I was looking for some advice on how to actually introduce competitive programming to a person that may have never tried it before. Any opinions on how to attract people to CP are welcomed. Here are mine :

  • Explain the joy of solving problems (of course that would be hard if they have never done it before).
  • Mention the benefits of being a competitive programmer (e.g. it will be easy to pass coding interviews).
  • It worth giving a try! (actually, the whole post is about this!)

But here is the problem. I don't think that these "reasonings" attract people. So what to do?

  • Проголосовать: нравится
  • +65
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Auto comment: topic has been updated by mohmahkho (previous revision, new revision, compare).

»
5 лет назад, # |
  Проголосовать: нравится +61 Проголосовать: не нравится

Explain the things you mentioned and wait for students who become interested. Nothing else you can do.

It's not a trolling. I'd like to hear something working too. In my university we get, in average, 1 interested student per year.

»
5 лет назад, # |
  Проголосовать: нравится +25 Проголосовать: не нравится

Competitive programming is something that doesn't sound fun, even though it is.
When I tried to get my friend to do it he said something like "so it's like glorified homework, right?"

And when I tried to change my school's "Computer Club" into something actually useful (competitive programming), it scared away a lot of the casual members.

Unless someone had a math background or something I wouldn't suggest going too much on the "joy of problem-solving" side (how could you convince someone with something they never experienced?) and instead go to the benefits of skill/opportunity/material gain.

Weird that I don't see many CP popularizers though, the competitive programming community definitely needs those.

»
5 лет назад, # |
  Проголосовать: нравится +155 Проголосовать: не нравится

Free food.

»
5 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится

no way. students can't get prizes by doing icpc. no prizes -> no motivation for casual students.

»
5 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Being advanced in competitive programming gives you high advantage in solving hard interview problems like Google, Amazon, facebook, .. etc to be recruited in them beside begin good in technologies + free food like TwentyOneHundredOrBust have said :D

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    being advanced :(

  • »
    »
    5 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +17 Проголосовать: не нравится

    Being advanced in competitive programming gives you high advantage in solving hard interview problems

    ... If your aim is just interview problems, leetcode and some coding interview books should give you enough ability to handle them. Competitive Programming is a waste of time if you do it just for the sake of doing interview problems. Honestly, you won't need the "advanced skills" anytime soon. The only thing you need for a IT-related job nowadays is a Computer Science education. Honestly, I don't know of any Competitive Programmer that have a significant advantage over others when it comes to jobs just because of his/her CP skills.

    After all, correlation is not causation. CP is one thing and intellectual ability is another. Good Competitive Programmers seem to be able to get into the "famous" companies more easily than the average joe. But that's because they are more intellectually gifted (generally) and not because they did a bunch of lame routine questions from online judges. An arbitrary interviewer is more likely to emphasize on how you handle unexpected situations than how you solve scholastic tests.

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Doesn't problem solving (math or CP or something similar) increase ability to think to solve problems? Not everyone can reach the same level as intellectually gifted people, but almost everyone can improve their ability to solve problems (or maybe ability to think in general). Solving typical (very similar to known problems) problems don't help much though.

      • »
        »
        »
        »
        5 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится +19 Проголосовать: не нравится

        If you wanna be good at solving math problems, practice more math. If you wanna be good at solving CP problems, practice more CP problems. If you wanna be good at solving people problems, try to work more in teams.

        Even though math, CP, blahblahblah. can help to increase "problem solving skills", the effect is limited to that of pattern recognition (like practicing past year papers for exam). Even though two fields may be related, skills in one may not be directly transfereable to another. Say, a gold in IMO doesn't necessarily make you a red coder on CF. Conversely, an IOI gold doesn't necessarily make you an IMO medallist.

        Let's take an example, say you want to be a sprinter. Of course, spending time at the gym would do your leg muscles some good, which is indrectly helpful for sprinting. But is that gonna help you become a good sprinter if you don't actually practice sprinting?

»
5 лет назад, # |
  Проголосовать: нравится +32 Проголосовать: не нравится

just tell that riela and some Twice singers are doing sp.

»
5 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Free T-shirt who solve at least one problem in the contest!

»
5 лет назад, # |
  Проголосовать: нравится +55 Проголосовать: не нравится

mohmahkho, this is something that I have been struggling with for quite a while, myself.

I hope you'll find this blog post useful: Competitive Programming — human intelligence strikes back

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    And don’t think that you are covered on this by your daily work — I would say, less than 1% of the typical work of a software developer comes close to it in terms of intensity.

    Wow! how swiftly he underestimated the software jobs. :|

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится

    Thanks. That's a great article.

»
5 лет назад, # |
  Проголосовать: нравится +42 Проголосовать: не нравится

I have another idea: tell them that it is rated.

»
5 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

In my opinion, a very attractive reasoning would be a demonstration of how a quick algorithm is better than a brute force algorithm.

Take some problem, for which the brute force solution is trivial. And then calculate how much time it would take on a computer for the problem to be solved by a computer. (For example if it takes 10^{12} seconds, then it would take 10^5 seconds on a computer that does 10^7 operations per second.)

Then, voila pull out the quick solution which solves it in less than a second !

This would create a strong impact.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    I remember when I first started to read the CLRS book. I think it was in the first chapter in which they compared two sorting algorithms (insertion sort and merge sort) and showed that time complexity is really important. They said it would take for insertion sort 23 days(!) to sort 100 million numbers and this time for merge sort is actually under 4 hours! That actually made me really interested in algorithm design. I was fascinated by the fact that two codes that do the same thing are not identical in running time (and can actually differ a lot). And somehow I had forgotten about that. Thanks for reminding me!

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Yes, sure.

      However, I would recommend you pick out a more magical example than 2 sorting methods.

      You don't want to pick out an example that is too complicated or technical. Don't show an example which is optimised by using a segment tree and binary search. Pick something where both the brute force and elegant solutions are easy to understand !

      I think something like this would be a good comparison of brute force and a beautiful observation. This is simple and elegant.

»
5 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

I think what would attract people is telling them there's an international competition to determine the best collegiate programming team in the world by getting teams to solve difficult algorithmic problems.