### Geothermal's blog

By Geothermal, history, 3 years ago,

Hi all!

I'm currently considering opening up a competitive programming training program of some sort. The details are definitely still in the works, though, and I wanted to discuss some preliminary ideas with the community to get feedback on what would be most helpful (and on whether there would be any interest in this).

I'm interested in starting a training program for three main reasons:

• To make competitive programming more accessible to those without access to resources like college courses or training camps

• To provide a space in which questions are encouraged and actively answered (especially since I think this generally isn't the case in the community at large)

• To help competitive programmers build problem-solving skills and intuition, which I think aren't sufficiently emphasized by most contest training resources

I think one of the most frustrating things about being a new (or even intermediate) competitive programmer is that it's generally pretty difficult to get help from people more experienced than you. My hope is that creating a community with the explicit intent of training competitive programmers less experienced than myself will alleviate this problem, and perhaps will help establish a norm of helping newcomers within the overall competitive programming community.

However, I'm not sure exactly what such a program would entail, so I'd love to get some input from the community on what would be most helpful. I would most likely organize this through a Discord server, which would include places to ask for help with problems, to discuss competitive programming in general, and to discuss how best to train. However, I think it'd probably be best to incorporate some element of active training into the program--some preliminary ideas I've considered include:

• Regularly published problemsets, including tasks of varying difficulties. Most likely, I'd publish relatively short problemsets a few times a week (something like one problem at each of three overall levels, with each trainee attempting one of the problems). For the next few days, those interested could work on solutions and message me for hints and feedback, and afterwards, I'd post my solutions, with a particular focus on outlining how I came up with my overall approach.

• Topic lectures introducing important algorithms and discussing several problems applying them. These would probably be most useful for people with some experience (e.g. stably rated above 1400-1500), since below that there aren't really too many specific topics to cover.

• Scheduled community virtual contests, with discussion sessions afterwards to talk through the problems and discuss ideas, especially with a focus on the intuition underlying the solutions.

• For a smaller group of people with more competitive programming experience, I'd be open to providing personal assistance with training, problem/topic selection, overall contest strategy advice, etc.

• If enough strong competitors are willing to get involved, it might make sense to have some sort of mentor-trainee program in which newcomers are matched with more experienced programmers in order to get help and advice.

The target audience for this would depend on who's interested--I think that at least in theory, I'd be able to work with anyone up to around (and including) the 2200s. My main goal would probably be to help novices have their questions answered and come up with a good general training plan while working more personally with more advanced competitors to focus specifically on building up intuition and shoring up weak areas.

Of course, all of this is very vague, since the above isn't any sort of finalized plan. At this point, though, I have a couple requests: 1. Post below if you would be at all interested in this. It'd be helpful for me to figure out how many people would want to be involved as I decide whether starting this up would be worth the effort. 2. If you have any thoughts on which (if any) of the above ideas you'd find helpful, or any other forms of training that would be useful to you, please share them--in the event I do decide to make this happen, I'd like to know what I can do to be of as much assistance as possible.

Thanks to everyone who read this far--if you have any questions or comments, please be sure to post them below!

• +376

| Write comment?
 » 3 years ago, # |   +32 I love any idea that tries to expand competitive programming participation and engage newcomers / people more susceptible to quitting early.
 » 3 years ago, # |   +1 Being a novice myself, this would be extremely helpful. I think discussion of problems would be particularly helpful. This is a great initiative!
 » 3 years ago, # |   +8 I have a question. How confident are you that this training plan of yours will not be diluted as the time passes because I saw many training plans that seem so good at the start and afterward there is nothing and we end up training the way we used to before the start program.
•  » » 3 years ago, # ^ |   +23 I've been pretty actively involved in the programming contest community (e.g. participating in CF contests, writing unofficial editorials for ABCs, actively engaging with the community on the USACO Discord) for a while now, so I think it's reasonable to expect that I'll continue this involvement in the long term. I also think that one reason many training programs fail in the long-term is that there aren't really any concrete plans, so they just peter out due to lack of interest. This is why I've brought up a few ideas for specific ways this program might operate, and I'm open to any other thoughts people have.
 » 3 years ago, # |   +4 This sounds like a huge effort, so thank you for your initiative. I struggle to work towards answers, most of the time it feels like I just stumble across solutions, so this sounds really beneficial.
 » 3 years ago, # |   0 I would be interested in this. I am trying all possible ways to get better at competitive programming, and I appreciate your effort on doing this if the program gets implemented.
 » 3 years ago, # | ← Rev. 2 →   +23 Sounds interesting. Personally, what i'd find useful (that isn't really common) are hints for problems before the editorial. I think these are much more helpful than just telling the whole answer in the editorial, as it gives people the chance to solve at least part of the problem on their own.
•  » » 3 years ago, # ^ |   +16 Makes sense--thanks for the input!
•  » » 3 years ago, # ^ |   +32 I second that. I'd also like more generally to outline the thought process leading to the solution, especially in the cases where the solution is some formula or constructive algorithm or such, and the tutorial contains just the proof of the solution, while the main difficulty of the problem is about how to reach that solution, not how to prove it.
 » 3 years ago, # | ← Rev. 2 →   0 I'm interested.But a small suggestion. Your target audience is around 2200 rating which I think you should reconsider. There are 1000-1200 people who lie in the range of 2300-2100. All of whom might not be active as well. Also people in this range are well versed with medium or medium-hard question. Since your target is to help new or intermediate Coders and make an impact at a good scale, I think you can make the rating threshold a bit low.
•  » » 3 years ago, # ^ |   +32 The 2200s are an upper bound, not a lower bound. My main intent of this boundary is to signal that people over 2300ish probably wouldn't get too much out of this program, but I would imagine that most people involved will be rated a good deal lower than 2200.
 » 3 years ago, # | ← Rev. 2 →   +30 It would be great to have a topicwise set with editorials, which I feel is something lacking. There are a few groups which have such sets, but no editorials. Examples of the contests I'm talking about:1) https://www.hackerrank.com/contests/5-days-of-game-theory/challenges helped me understand nim and it's variants much better. 2) https://atcoder.jp/contests/dp helped in keeping track of various standard dp variants.
•  » » 3 years ago, # ^ |   +18 Good thoughts--thanks for the suggestion!
 » 3 years ago, # | ← Rev. 3 →   0 If you can really build "a space in which questions are encouraged and actively answered", that'd be totally awesome :). Doing CP alone without friends to discuss can be pretty lonely.
 » 3 years ago, # |   0 I have always been a fan of you. Your editorials have been helping me a lot lately. So I am definitely in :)
 » 3 years ago, # |   0 Great Initiative. I am definitely in.
 » 3 years ago, # |   +74 Good initiative. Though, you should say if that's free or paid.And I strongly recommend using CF group & mash-up, it's a very convenient combo if you want to use old CF problems.
•  » » 3 years ago, # ^ |   +30 Thanks for the suggestions! The plan is for this program to be free. I'm open to potentially launching some sort of paid program in the future, but that would probably be somewhat more involved than what I've described above--the main two forms of this that I've thought some about are described below:1: Last summer, I started work on a complete competitive programming course, including lessons and problem sets on topics appearing commonly in programming contests. I quickly realized that this would be an absurd amount of work (order of magnitude, my plans would have involved about 1000 pages of writing) and set it aside, but I'm open to returning to the project in the future. If I do eventually finish this, it would probably cost some amount of money because of the large amount of original content it would require me to create.2: If anyone contacted me seeking more long-term/time-intensive one-on-one tutoring, I would charge some fee for that, since with the portion of my free time I'm devoting to helping the programming contest community, I'd prefer to focus on projects like this or like writing solutions to AtCoder problems that benefit the whole community rather than certain individuals. I don't plan to advertise this kind of service, though, since I don't think the marginal benefit of this sort of training is worth the cost I would need to charge for it.
 » 3 years ago, # |   0 I'd like to opt in if it is going to happen. I guess the bottle neck for many people like me is about how to approach problems. Most of the time, problems to me are either know or don't know.To me, problem solving is more like an art where experience comes to play a big part. If your program can help to reduce people's reliance on experience for solving problems or educate people on how to cultivate that experience, that will be greate.
 » 3 years ago, # |   0 Amazing idea :)
 » 3 years ago, # |   0 I'm interested too
 » 3 years ago, # |   0 I'd be super interested, mainly because I don't know how to train correctly and efficiently :P
 » 3 years ago, # |   0 I'm also interested.I wasted more than a year, practicing in unorganized and inefficient way, thus couldn't improve much (as you can see from my profile). Moreover, when I try problems of 1700+ rating, I often get stuck and if don't get help, I leave it due to demotivation. Many times, for some problems, editorials/comments are not that helpful for noobs like me.
 » 3 years ago, # |   +166 Of course you will get overwhelmingly positive responses, who doesn't want free training. But I (of course, this stupid Um_nik again) don't think that it will work as you want, and here is why: Many people believe that there is some magic formula how to train to become red. And you encourage these misconceptions by saying "discuss better training" or similar. Is there better training? Probably yes, but any problem solving is better than discussing "better training". Many novices don't know how much time they should spend on a problem before asking for help. Moreover, most of the time answer is "until you have solved it". In my opinion, in 95% of cases, all the help that is needed is "yes, you are able to solve this problem, you know all the algorithms used in this problem". And any other hint (the one that really tells something about the solution) diminishes results of training process, because probably this hint will greatly reduce "possible solutions space". Of course, there will be people who uses your help right. Let's say that 95% of people will be like that (that's waaaay over my real estimate). They will rarely ask something when they are really stuck, and they will formulate their questions in a verbose manner, etc. Other 5% will just spam you with stupid questions like "how to become red". 5% is not much, right? Wrong. These 5% of people will generate more than half of questions, they will be seeking for your attention all the time, they will become angry when you "don't share the secret how to become red".3.1. You will probably think "I'm doing this in smaller version on USACO discord and everything is fine". There will be people of different culture, who doesn't see this behavior as abnormal. Virtual contests with discussion is probably the best of your suggestions... but. I may be wrong, but it seems that people are much more willing to tell their solutions than listen to others solutions. And in chat-like format of Discord this will probably lead to chat having 15 different solutions nobody read, different problems will be mixed up and all of it will be gone in 10 minutes buried under some "orz"s and stickers. I will be very happy to be wrong. I might even try to participate as a "mentor" though I don't think that I will last long.
•  » » 3 years ago, # ^ |   -7 i think you're right everyone needs the magical formula. when i joined codeforces and saw great people in CP, i started to ask them about how to become better, but don't get it wrong i DON'T HAVE A COMMUNITY in my university so i wanted a sheet or a website to practice from.
•  » » » 3 years ago, # ^ |   +28 If you can read this text then you know at least one website for practice with THOUSANDS problems, many of which have thematic tags and (for a year or so) estimated difficulty.
•  » » » » 3 years ago, # ^ | ← Rev. 2 →   +5 you're right and i started searching and solving, i know that there's no magical stick and someone says"abra kdabra" and boom you're great, i know practice is the only way it's like asking first bench student how to solve in the exam he will say "study hard". but don't you think beginners with no community like me needs some help
•  » » » » » 3 years ago, # ^ |   +17 I'm not sure if you NEED it in a sense that without help you cannot become better, but it can be a positive thing. And it is good that Geothermal is going to provide this to you and others. BUT. I say that you should use this help wisely. Ask specific questions about specific problems you tried to solve, not some vague shit like "how to become better".Basically you are the confirmation of my words. You say that you understand everything but you still want to know "how to become better".
•  » » » » » » 3 years ago, # ^ |   +5 i didn't say "how to become better" i said we need help sometimes i face problems and i read the editorial and i don't get it
•  » » 3 years ago, # ^ |   -8 What if the admins establish some rules?
•  » » » 3 years ago, # ^ |   +10 Then people will break these rules because they think they know better
•  » » » » 3 years ago, # ^ |   +3 The good thing about owning the server is you can kick anyone who thinks they know better than you. Of course, people generally don't do it because of 3.1 (you will get a lot of angry people). But I think that's the only way you're not going to be flooded with bad questions...
•  » » » 3 years ago, # ^ |   +29 OK, you really thought about many things and I'm starting to believe. In the event you end up doing this write me a PM if you want me to be one of "mentors".
•  » » 3 years ago, # ^ |   0 i agree with you sir , it is best to sit down and practice.
•  » » 3 years ago, # ^ |   +3 any problem solving is better than discussing "better training" Yes, most of the people already know a good enough training method, but there ARE some people who would benefit from discussing better training.There is no science on "better training" as far as I know, but most of those who are good at this agree in some things, solve a lot of problems, for example, is a widely accepted rule.Another widely accepted rule is to solve problems that are "on your level" (not too easy, not too hard).This second rule is really obvious, but some common behaviors kind of violate it, for example, taking part in many contests, without doing any upsolving, is clearly far from being a good method, yet many people do it.It isn't a good method because you spend 2 hours and get to solve 0-1 problems on your level, while using the same time in a different way would allow you to solve 2-3 problems on your level, extrapolate that to many contests, and the difference is considerable.
 » 3 years ago, # |   +1 very good initiative , looking forward to learn from master coders. all the best Geothermal
 » 3 years ago, # |   0 I'd be interested in both teaching and mentoring.
 » 3 years ago, # | ← Rev. 2 →   0 I totally agree with Um_nik low rated users tend to ask a lot of questions when given the space, a lot of times even without thinking about the problem or the editorial itself, last week I wrote an editorial for a contest I made for beginners in my university, the editorial was just short hits to encourage them to work, for one of the problems I wrote. Just write brute-force solution for small values of n. You will easily find the pattern. You will get surprised to know that two different users asked me what should they do to solve this problem, even after reading the hint !!!I think the best way to organize this program is to make it a multi-level program, You can mentor a small group of high rated users, some of these high rated users mentor group(s) of medium rated users, and some of these medium rated users mentor group(s) of low rated users. You save yourself a lot of headache by working with small group of users and mentors.Personally, I can take part in these mentoring process, and I am willing to keep doing it as long as I have free time ( which I have lot in the next couple of months ), and I am benefiting from this program by improving my CP skills.
 » 3 years ago, # | ← Rev. 2 →   +3 I have an idea, for detecting level of someone you shouldn’t just use CF rating, Because many programmers i know are very strong in competitive programming but they are not fast enough to get a high rate on CF, so you should also design some sort of exam with like 3 problems and 5 hours to solve them, and then base on the CF rating and the result of the exam you can detect speed and skills of someone and use a proper training for him.Sorry for my bad english :D
 » 3 years ago, # |   +3 I am interested for both Mentoring and training Program. I loved the idea of topicset and discussion after virtual contest.And Mentor-trainee that will works on basis of "Give and Take" and remove the load of lots of newcomers from you to keep the training program like big-orgainization level group.But i have a sugeestion after reading other comments.If you kept it free training then there must be some rules and those who break the rule after some fixed number of times will be kicked out of group. As Um_nik is rightly mentioned there would be some number of people who will transform the group into mess. so it is important to remove them to keep remaining group clean and helpful for everyone.
 » 3 years ago, # |   0 I'll love to get advice from more experienced programmers, especialy because in my university I there are none :(.
 » 3 years ago, # | ← Rev. 2 →   -7 I am very interested in this program. I have been struggling at my current level/color for many years. definitely need some good training and coaching. This is just my idea about format. prepare a good algorithm list pick one from the list every week, and publish lecture video (video with whiteboard or screen is much easier than written material) release some good topic related problems. In midweek, you can publish hint video to answer the most frequent questions, meanwhile people can discuss about problems on the platform. As other people saying, you cant follow up everyone (hundreds to thousands), so please focus on your videos and problem selection throughout the week. You will invest your time and resource, so you can charge some fee for this. Also by charging, you can filter the real ones from the crowd...
•  » » 2 years ago, # ^ |   0 I am glad that ITMO is doing exactly what I wanted. https://codeforces.com/blog/entry/82545#comment-696611
 » 3 years ago, # |   0 Yes, interested!
 » 3 years ago, # |   0 I'm interested in this project.I'm interested in promoting competitive programming, but I think we should know the novices well at first. This project can be a good experiment — to know what the new comers are actually seeking, and how they behave when they find competitive programming is actually different from their original imagination. Also, we can try to find what they need when they learn, practice, compete, fail and grow. We can share our experience to them, at the same time we can get to know them — so that we can build the community more friendly to those who are less experienced.It's risky — yes, because I don't know them well yet. I'm not technically strong enough, but I hope I can give some help to this.I've seen many good ideas in the comments. I'm looking forward to this training camp.
 » 3 years ago, # |   0 I love this idea and I am definitely interested , Unlike some others who provide help , u chosed a nice category , because most of the others pick people who have rating >= 2600
 » 3 years ago, # |   0 This is a great idea! Hopefully you'll end up doing it. Honestly I'll be even up for 1 on 1 tutoring with a fee. I've started cp as a hobby to improve my problem solving skill for like 4 months. It is definitely daunting and difficult a lot of the times, especially after spending hours trying to solve a problem. For me, it is either I don't fully understand why my solution does not work, or why the editorial solution works. I think proving a solution works definitely helps a lot for novices like me. Having an active community to share thought process and being able to learn from a different perspective is always helpful.
 » 3 years ago, # |   0 I am also interested in this. Will there be training for the olympiads? for example, ROI in Russia
 » 3 years ago, # |   0 Interested. I think I personally am in the sweet spot where I can both help others and be helped myself
 » 3 years ago, # |   0 Good Initiative Geothermal, really appreciate your consideration for the community! :)I would be happy to be a part of this.
 » 3 years ago, # |   0 Interested.
 » 3 years ago, # |   0 Definitely interested, we can perform better under the guidance of experienced persons. It is upto us how to use this program...
 » 3 years ago, # |   0 I have a very little community in my college, so i really want to join it and want to interact with people. Want to solve pthers doubt and mine sometimes to be solve. Really into it.