SuprDewd's blog

By SuprDewd, history, 8 years ago, In English

AlgoWiki logo

Hi everyone. Over the past couple of years I've been collecting problems, articles, and competitive programming resources that I find interesting. It's already grown to dozens of sheets in multiple Google Sheet documents, and is a pretty bad mess. As an effort to organize this list and make it public, I decided to turn it into an online wiki dedicated to competitive programming: AlgoWiki.

The url is wiki.algo.is, so it should be easy to remember.

I'm far from done migrating stuff into the wiki, but I think there's already quite a bit of useful information in there. I tried to prioritize algorithms/data structures/techniques that are less known, and then listed problems and articles that I thought were especially useful for learning/practicing the given topic. In some cases I've additionally extracted/written content about the given topic, with notes that point out common pitfalls or help give a better intuition for the topic.

To give you an example, consider the Minkowski sum page, a topic that I think is pretty neat, but has yet to become "mainstream" among competitive programmers (as far as I can tell). Here I've extracted relevant sections from Wikipedia, listed problems that can be solved using Minkowski sums, linked to comments/editorials that might give some hints for each problem, and given some links about Minkowski sums that I thought were useful. Ideally I would like to rewrite the text with competitive programming in mind, but the Wikipedia sections serve as filler content for now.

Now, while I hope you enjoy what I have gathered so far as well as what may be added in the future, I would also like to invite you to contribute whichever neat algorithms/data structures/techniques/problems/articles you may encounter, so that others may also benefit. This is a wiki after all... Currently there are two ways to contribute:

  1. by creating an account on AlgoWiki and editing pages through the web interface (as is common on online wikis), or
  2. by forking AlgoWiki on Github, where all the wiki source files are stored.

My goal is to keep the wiki as open as possible, while also keeping the quality of the content high. If you want to help me moderate contributions, feel free to get in touch.

I also have another related project in the works, which is at an even earlier stage of development. The motivation for that project is that great problem sets, articles, and other competitive programming resources, especially older ones, are slowly disappearing from the internet. Another case in point: the link to the third problem on the Minkowski sum page linked to above is already dead. As a digital data hoarder with much respect for the effort that went into developing these resources, that makes me very sad. To battle that, I would like to create an archive/mirror of competitive programming resources.

I already have something very primitive up and running at archive.algo.is, with some content that I've scraped online. As this is very early stage (and this applies to the wiki as well), I have not yet gone through licenses/contacted rights owners, so if there is anything there that I may not be allowed to redistribute, please let me know.

I also have a lot of other material, both digital (e.g. training camp material) and on paper (e.g. "vintage" problem sets from CMU around 2000), that I would love to make available online, given an approval from the respective sources.

The ultimate goal would then be a vast, yet well organized collection of problem sets (with test data), and other kinds of competitive programming resources, reliably mirrored over several machines on the internet. In particular, this could then be used by the wiki without fear that the links eventually die.

If you would like to help me get this started, or have any material you can contribute to this, please, also get in touch.

  • Vote: I like it
  • +231
  • Vote: I do not like it

| Write comment?
»
8 years ago, # |
  Vote: I like it +28 Vote: I do not like it

This is gold.

  • »
    »
    8 years ago, # ^ |
    Rev. 2   Vote: I like it +20 Vote: I do not like it

    Thanks to people like you who make articles that are gold!

»
8 years ago, # |
  Vote: I like it +16 Vote: I do not like it

Nice, but there are some pages where only I can find problems related to topics. I like the initiative, when I have some time I'm going to edit some articles.

  • »
    »
    8 years ago, # ^ |
      Vote: I like it +5 Vote: I do not like it

    Please do! Some nice contributions have already been made; see the Trie page for an example.

»
8 years ago, # |
  Vote: I like it +8 Vote: I do not like it

Wow! That's great! Thank you, Mr. Kattis #1
Let's contribute in it!

»
8 years ago, # |
  Vote: I like it +6 Vote: I do not like it

We already have this: http://wcipeg.com/wiki/Special:AllPages, what makes AlgoWiki different from it?

  • »
    »
    8 years ago, # ^ |
      Vote: I like it +26 Vote: I do not like it

    Great question! People's time being spent on contributing to AlgoWiki (or any other wiki) should not be taken for granted, so I understand---and applaud!---your skepticism. I'll try to explain my goals for this wiki, but first, for comparison, a few remarks about PEGWiki:

    • I never got the impression that PEGWiki was open and intended for competitive programmers as an audience. Indeed, reading the aims of PEGWiki on their Main Page somewhat confirms that: their wiki should contain various info about the PEG organization as well as topics from computer science as a whole, and the intended audience are PEG members.

    • Despite that, there is already a lot of quality content on PEGWiki for competitive programmers. However, it seems mostly restricted to IOI-level topics. Again, it seems to be focused on PEG members, who I presume are high school students preparing for IOI.

    • As far as I can see it's not been too active (although I was only able to filter by the last 100 days, and then looked at some random articles). And considering that it's been up for something like 8 years (which is impressive in its own right), 100 articles doesn't seem like a lot, although it does seem like they've been going for quality over quantity. Also, looking at some random page histories, it mostly seems to be one contributor, which may be related to my first point about it not being a truly open wiki.

    • I have no guarantee that their wiki will be up for the forseeable future, and who knows if they're backing up their database etc. Why should people trust them with their valuable contributions?

    In contrast, AlgoWiki aims to be completely open with the intended audience being competitive programmers, exclusively. So any content related to competitive programming is acceptable, while also not being too general (it doesn't cover Computer Science as a whole). Being open means that anyone can contribute, the content is available under cc by-sa 3.0, and that anyone can recreate the wiki on their own machine/server. To achieve this, all wiki contributions are mirrored to the AlgoWiki repository on Github, and soon I will also publish configurations files etc. needed to run the server. This should take care of any persistence issues, and means that the project can continue even if I get hit by a bus.

    Now, perhaps most relevant to your question, my initial vision was not for AlgoWiki to be a replacement for other competitive programming resources, such as PEGWiki. Rather, it should be a collection of external competitive programming resources, filling in holes where necessary (and not duplicating content that's already been repeated enough), making it a sort of companion and guide for the competitive programmer who's trying to learn something, instead of being the only resource to learn from. In particular, lists of external practice problems form an essential part of the wiki (whereas PEGWiki does not seem to focus on that too much). When resources for a topic are rare, all problems and articles related to that topic should be listed; otherwise only the ones of the highest quality and with the greatest learning value should be listed. If the project naturally diverges from this vision towards something else that is useful, that's also totally fine with me.

    Finally, I'm hoping to make this a sort of grassroots project by the Codeforces community/the competitive programming community as a whole, which in turn I'm hoping serves as a motivation for making it great. To get rid of any dictatorship on my behalf, I've reserved an organization on Github where select/nominated members of the competitive programming community can join me in guiding this project towards something useful. If anyone is interested in that or can nominate someone, please contact me.

    Hopefully this answers your question.

»
8 years ago, # |
  Vote: I like it +6 Vote: I do not like it

Thanks for your effort! I've found that it is pretty difficult to find decent sources of algorithms and data structures for competitive programming in the internet and what you are doing is perfect to solve this issue. I will contribute whenever I can!