I’m working on a project this year to build a competitive programming FAQ. This is one in a series of articles describing the research, writing, and tool creation process. To read the whole series, see my CPFAQ category page.
We’re officially halfway through the year, as measured by weekly blog posts. That means I’m also halfway through the CPFAQ project. As I mentioned last week, I’m building the Competitive Programming FAQ inside a MediaWiki site. This week, I added a few more pages to the wiki. My plan is first to focus on the questions, and later in the year to work on the answers. So the FAQ pages will initially just contain pointers to Quora questions (along with their answers), and will later include answer text in the wiki itself.
Wiki Pages
As described in last week’s post, I’m creating three main types of pages in the wiki: canonical question pages, wiki utility pages, and encyclopedic pages. I’m starting by focusing on the first two types.
The canonical question pages are based on my question collection research this year. I have manually classified about 600 popular Quora questions so far, and I’m starting my wiki work by creating pages for the most popular of those, as measured by the number of Quora questions associated with each canonical question. Here are the first few FAQ pages:
- How do I get started with competitive programming?
- How do I get better at competitive programming?
- How did (person) become a top competitive programmer?
For the wiki utility pages, I’m mainly concerned with category pages. These provide a classified view of the FAQ pages:
- Category:Frequently asked questions (the top-level FAQ page, which points to all the others)
- Category:FAQs about getting started
- Category:FAQs about getting better
- Category:FAQs about people
To supplement the category pages, which are mostly auto-generated, I also manually created a site map page. Like the category pages, the site map also points to other pages. But it shows all the pages in a single list, rather than a hierarchy of multiple pages. I’ll see if it remains useful as the site grows.
Classification Notes
One of the goals of the FAQ is to organize competitive programming questions better than they are currently organized on Quora. That requires thinking about which FAQs should go in which category, and which Quora questions should go in which FAQ (i.e., the mapping from Quora questions to canonical questions). To facilitate this classification process, I have added a classification notes section to the bottom of each FAQ page. These notes describe the types of Quora questions that belong on a particular FAQ page and the types of questions don’t belong there (along with which FAQ page those questions should appear on instead). For example, here’s a note from the bottom of the How do I get started with competitive programming? FAQ page:
This question is about getting started with competitive programming in general, or getting started with a specific online judge or contest. The FAQ has separate questions about getting better, for people who already have some experience. If a question mentions an online judge in the context of getting started on that online judge, then it belongs in this category. Otherwise, it belongs in FAQs about online judges.
By documenting the inclusion and exclusion criteria for each page, I hope to maintain the consistency of the pages as I add more Quora questions over time.
(Image credit: Judit Klein)