TL;DR I am thinking of holding a series of livestreams on youtube/twitch of me solving problems without having seen them beforehand. I want to highlight how to approach a medium-hard programming task when you are faced one. I want this to be a social and chill environment. Your ideas/feedback would be greatly appreciated.
TS;WR
Hello guys! I have been doing competitive programming for a while, and lately I have been thinking about how I have developed myself during the past years, and what is different between how I used to approach problems in the beginning and how I do it nowadays. I was thinking that it would be a pretty nice idea to give back my thoughts to the community.
What I was thinking about is recording some videos or streaming myself solving some competitive programming tasks that I haven't seen before. The inspiration for this idea came from a friend (teammate) of mine who wanted to do this quite some time ago, in order to train for ICPC. The format would sound like this: you would propose tasks that you find interesting or that you had been challenged by when approaching them on first sight, and I would try to solve them during the stream (deciphering the statement, finding the solution, implementing the solution).
Why I want to do this
I have been coaching some people for a while, and during this time I have the feeling that somehow explaining a problem/solution turns out to be very different when you have solved the problem beforehand as opposed to coming up with it when you are facing with the task for the very first time. Not only are there a lot of pitfalls that I tend to forget having made after I had solved a problem, but also it's that a lot of the times I don't recall the thought process that needed to happen in order to solve it. That's why it's sometimes hard for me to even give hints to people, if they're stuck on a task, for example.
With this format, I am hoping to capture and highlight the general thought process that happens between reading the statement of a problem and getting AC on it, in addition to the solution itself. It might also include tips on implementation and debugging along the way.
Some more details (FAQ style)
So is this some sort of online coaching sessions?
Yes and no. While the main goal of this is me trying to highlight the thought process of solving the problem, I want to see it as more of a group where you and I both discover which ideas and approaches work on tasks, and which don't
What happens when you run out of ideas for a solution?
Some problems might pose difficult for me as well, and given that I would be live, there's a high chance that I might get stuck. At these times, I think I might move on to another problem (which is probably what I would do in a contest), or ask for a hint from you guys.
How do we propose tasks?
What I was thinking of is a simple poll where you could add options, and vote for the best ones. This website seems to provide a quite neat interface for creating exactly what I need. You could also post a comment, and whichever comments receive most upvotes will be chosen. This way, the post will be kept more alive until the actual stream.
Some people solve contests; why don't you just do that?
While I certainly don't want to restrict myself to this proposed format, the reason why I am thinking of solving problems "offline" as opposed to during the contest boils down to the fact that even though solving contests would yield a similar scenario, I am usually more stressed during contests, and that would relate to less talking and more thinking; for now, I think solving tasks offline would provide me with enough calm to more easily and succinctly describe my thoughts.
When is it going to happen?
I was thinking of doing the first stream on Sunday at 3 PM EEST, on YouTube. The YouTube channel that I'm going to be streaming from is here.
Vote your options here (you can also just comment down below)
Please only use links when adding options. I would pick the tasks that have most votes during the stream. For this session, please restrict yourselves to problems that are not too hard, so that I would be able to build up my courage :). Problems can be on any judge from Codeforces, Atcoder, CSAcademy, Kattis, Infoarena, and others. They can be either ICPC style (preferred) or IOI style. Difficuly level should be around Codeforces Div1 A/B/C (or Div2 C/D/E)
Please, do your best to check beforehand if I have solved a task, and do not add/upvote tasks which I have already solved.
Final words
I will be updating this post as the week progresses, but I was very eager to post this. I am very excited about this idea, and I can't wait to hear your feedback. Any ideas of yours are greatly appreciated.
I hope that I'll see you during the stream!
UPD: I have settled the stream date, and added a link to my channel.
UPD2: The stream is now on YouTube for whoever wants to watch it. Quick jumps are in the descriptions, for each specific problem. https://www.youtube.com/watch?v=fpxArbp3FLo
Auto comment: topic has been updated by bicsi (previous revision, new revision, compare).
That’s a very good idea. I wanted to see how to approach a challenging problem for a long time. See you on Sunday!
Hi! I think that what you are trying to make could be very productive for a lot of users. It's more or less easy to learn patterns which are helpful for problem solving, but it's not that obvious to learn from natural mistakes, so your work could actually give some useful insights to a lot of people.
Here is a quick suggestion: https://infoarena.ro/problema/radacina2. Probably not the best option, but it should be decent as a starter.
It would be better that if you want to publish a series you can focus on a certain topic and solve some problems from that and then move to the next topic instead of random problems. thank for your efforts.
Not really. You don't want to hint him anything about the problem. For a lot of people it's not very intuitive how to approach certain problems and you want to see the process of thinking and his decisions.
For instance, beginners may find it hard to distinguish between when to have a greedy approach or a dynamic programming one. For such problems, if you know which category you need to apply, you basically spoil all the fun.
Totally agree!
I think that’s a good idea, and something worth experimenting with in the long run, if the straming starts to take shape. I would, however, keep the idea of solving problems that I have never thought about before, and it might pose harder to choose themed tasks without reading their statement. But we’ll see how this thing goes, as I’m still haven’t decided on what the best format would be.
I have added the link to my channel in the post.
Subscribed :)
Reminder: stream starts in 90 minutes!
Link: Here
Auto comment: topic has been updated by bicsi (previous revision, new revision, compare).
Here's an idea : Ask a coder buddy to pick some problems for you — as in say you want to solve div2E/F problems, then maybe your friend can pick problems that cover not the same topics again and maybe are less implementation-heavy (to focus on the thinking process).
This way you don't have to search for problems on the livestream.
Loved your stream though. Please do more of these ;)
Thanks for the feedback! I think this might be actually what I'll end up doing in the long run. However, I would still keep myself open in case any of you has some special requests.