Red-Green-Code

Deliberate practice techniques for software developers

  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter

CPFAQ: Question Categories, Part 2

By Duncan Smith Sep 6 0

Books

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.

Using my QuoraClassifier tool, I’ve gotten about 25% of the way through my question list. So I thought it was the right time to revisit the criteria I’m using to assign primary categories.

Primary Category Updates

The recommendations from my first post about categories has held up well as I categorize more questions, but I have a few adjustments to make. Here are some additional notes about each category:

Algorithms

Two common types of questions from the list are: (1) Questions that describe a short programming problem, as one might find it in a textbook, and ask for the answer; and (2) Questions that ask for the solution to a more general algorithm problem. Questions of type (1) go in the Specific Problems category, as described below. Questions of type (2) go in the Algorithms category.

An example of a type (2) question: How can I encode a tree into a string format such that the tree can be constructed back from the string encoding? Also encoding should be efficient both time and space-wise.

Books

If a question mentions a book, I usually put it in this category, even if it’s also related to topics like algorithms or interviews. People don’t ask about competitive programming books as often as they ask about other topics, so it doesn’t hurt to give this category a few extra questions.

Examples:

  • How do I get the most out of the book “Cracking the Coding Interview” by Gayle L McDowell?
  • I want to learn data structure and algorithms, should I start with CLRS?

Coaches

This is a small category, but there are enough specific questions on this topic to justify separating them out. In addition to coaches, it’s a good place for questions about other people who provide competitive programming advice. For example: How can I find a mentor to help me prepare for IOI?

Competitive Programming vs. Professional Programming

Not all questions in this category deal with professional programming directly. Sometimes people are preparing for a professional programming career using activities like personal projects or open-source contributions. For example: Between competitive programming and projects, which is more important?

Popular questions in this category ask about topics like the benefits of competitive programming compared to other types of programming, transitioning from a focus on CP to a focus on programming as a job, whether CP is good preparation for work, and what distinguishes the CP approach to problems.

Contests

The key element of competitive programming contests as compared to other CP activities is that contests pit competitive programmers against each other in real time. A contest might last hours or days, but participants work on a fixed set of problems under a deadline. In contrast, a question about working through a set of problems at one’s own pace would not appear in this category, even when that set of problems is public and available for other competitive programmers to work on.

Questions in this category cover topics like preparing for contests, contest rules, contest schedules, pros and cons of different contests, team strategy, people’s experiences at a particular contest, whether it’s worth preparing for a contest, and lists of topics for a contest.

Courses

There are only a few courses that specifically cover competitive programming, and people want to know about them. Other questions in this category ask about courses that don’t cover competitive programming directly, but teach algorithms.

Exclude

I collected my question list based on topics assigned to questions by Quora users. But these topic assignments aren’t always accurate. Question writers or Quora bots sometimes assign CP-related tags to general programming questions. In those cases, I put the question in the Exclude category. Often I’ll also remove the incorrect topics in Quora. But I can’t stop people from adding them back, so the Exclude category ensures that it won’t show up again in my list.

General

This category is for questions about CP at a meta level, rather than a specific aspect of CP. Questions in this category ask things like what CP is, whether it is useful or not, whether to quit, why it gets so much attention, and what various people or groups think about it.

Since questions comparing CP with other types of programming are so common, they go in their own category, Competitive Programming vs. Professional Programming.

Getting Better

People often ask about improving their competitive programming skills without reference to an algorithm, contest, online judge, job, language, or other specific target. That’s the reason for this category.

Example: Is practice mean everything for competitive programming, or do I have to have an Einstein brain?

Getting Started

It’s common in the Competitive Programming topic to see questions about when to start working on CP, what to learn before starting it, and how to approach it as a beginner. Those questions go in this category.

Interviews and Jobs

This is a large category that I could split into subcategories like algorithms for interviews, getting started at interview preparation, etc. but I’m leaving it in it’s own category so it doesn’t overwhelm the others. While I want to include this category because of the close relationship between competitive programming and coding interviews, the FAQ is primarily about competitive programming.

One change in this revision: I’m including in this category questions about how CP experience affects admission to university (undergraduate or graduate), which is analogous to being hired into a company.

Languages

If a question asks for specific information about a programming language (doesn’t just mention a language), I usually put it in this category.

For questions about language-related tools, like compilers and editors, there’s a separate Tools category.

Math

Most questions that mention math topics should go here, unless they’re about math-related algorithms (in which case they go in Algorithms).

Online Judges

If a question is specifically about an online judge, how it works, its schedule, etc., it belongs here. If mentions an online judge but is really about algorithms, problem lists, or getting better at competitive programming, then it belongs in one of those categories.

Organizations

Sometimes a question asks about a company or other organization, but isn’t about interviews and jobs at that company, or about the people who work there. Examples include questions about the business model of a CP-related company, or the pros and cons of joining an organization from the perspective of someone with a competitive programming background.

People

This category is for questions about named individuals or specific groups. Examples of groups include employees of a company, students at a school, or citizens of a country.

Problems

This is for questions about problem-solving in general, not questions asking how to solve a specific problem. Examples include how long to work on a problem before looking at the solution, where to find problem lists, and requests for favorite problems.

Psychology

This is a new category for this update. It’s for questions about the mental game of competitive programming.

Examples:

  • How do I control anxiety during programming competitions?
  • I have lost my appetite for coding. What can I do to bring it back?

Specific Problems

As mentioned above in Algorithms, questions that ask how to solve a specific programming puzzle go in this category. I also include specific interview questions in this category.

Time Management

In addition to traditional time management questions and questions about practice schedules (e.g., How do I solve 300-400 problems on SPOJ in 120 days?), I’m also including other time-related questions in this category. For example: Is one year sufficient to be a top level competitive programmer?

Tools

Questions in this category are mainly about software, but I did see one hardware question: Which laptop do all top class competitive programmers use? (No guarantees on how useful that question is).

Training Camps

I’m seeing enough questions about competitive programming boot camps and training camps that I created a separate topic for them in this revision.

Example: What is it like to attend famous programming camps like Petrozavodsk camp, USACO camp, or Chinese IOI camp?

Websites

This is for questions about websites not associated with online judges, organizations, people, or other previous categories. For example: Which channel/tutorial on YouTube is best for learning algorithms or data structures?

(Image credit: The City of Toronto)

Categories: CPFAQ

Prev
Next

Stay in the Know

I'm trying out the latest learning techniques on software development concepts, and writing about what works best. Sound interesting? Subscribe to my free newsletter to keep up to date. Learn More
Unsubscribing is easy, and I'll keep your email address private.

Getting Started

Are you new here? Check out my review posts for a tour of the archives:

  • Lessons from the 2020 LeetCode Monthly Challenges
  • 2019 in Review
  • Competitive Programming Frequently Asked Questions: 2018 In Review
  • What I Learned Working On Time Tortoise in 2017
  • 2016 in Review
  • 2015 in Review
  • 2015 Summer Review

Archives

Recent Posts

  • LeetCode 1022: Sum of Root To Leaf Binary Numbers January 27, 2021
  • LeetCode 1288: Remove Covered Intervals January 20, 2021
  • LeetCode 227: Basic Calculator II January 13, 2021
  • A Project for 2021 January 6, 2021
  • Lessons from the 2020 LeetCode Monthly Challenges December 30, 2020
  • Quora: Are Math Courses Useful for Competitive Programming? December 23, 2020
  • Quora: Are Take-Home Assignments a Good Interview Technique? December 17, 2020
  • Quora: Why Don’t Coding Interviews Test Job Skills? December 9, 2020
  • Quora: How Much Time Should it Take to Solve a LeetCode Hard Problem? December 2, 2020
  • Quora: Quantity vs. Quality on LeetCode November 25, 2020
Red-Green-Code
  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter
Copyright © 2021 Duncan Smith