tom's blog

By tom, history, 10 months ago, In English

Hello Codeforces community,

I am writing to you to seek help and guidance.

I'm running algorithm class in my former high school. We meet online, since I do not live at my hometown anymore. Every week me and/or my assistant (also, my former student) try to cover one new topic and explain related problems. We run the class entirely for free dedicating our free time and energy to it. We do not get any help from the school and teachers. Mainly it's because they do not have enough skills to teach CP. And they're simply too lazy to learn it.

I started the class, because I know how difficult is to achieve something in this field when you encounter CP late in college for the first time. I needed to work like mad to catch up, Even though made me fell inadequate many times I do not regret any minute spent on solving problems. I think it taught me analytical thinking, forced me to find a proof of the solution before implementing it (sometimes very painfully) and, in general, helped me to become a better programmer. Also, I landed my dream job by virtue of knowing algorithms well.

So I decided to share my gratefulness by helping other young people :)

Unfortunately, it's much easier said than done. We've been running the class for more than 3 years with small breaks. At the beginning, it was pure fun, but over time it gets more and more frustrating when you spend your time and energy and you get nothing in return. And I don't mean money here. What we strive for is to help these young guys to get to Polish OI finals. For now, with no luck.

I understand that some of the people are just not gifted enough to get there. Especially, given polish OI is considered as one of the most difficult in the world. However, I would like to focus more on what we can do, not on the things we cannot change. I see the following problems and questions:

  • It's difficult to advance to finals without systematic training at school and constant pressure from teachers and peers. We do not have any ways to put the pressure on them. We're not there (I live abroad). We do not grade them. Even if we did, the grades would be meaningless.

  • If you don't advance to finals, you get nothing at high school. It's all or nothing game. So you need make a decision what to sacrifice (unless you're a genius kid). How to convince them to let go (within reason) other classes?

  • We do not get any help from teachers. Even parents do not know what we're doing. Perhaps this is the main point we're doing badly. Should we strive for more publicity?

We decided to ask you, guys, because well... you are really good in this matter, :) You've all made the way from total beginners to advanced competitive programmers. And some of you are experienced with well organised, efficient algorithm classes at your schools. Sharing your experience would be of great help to us. In particular, we would like to ask you:

  • How did you manage to solve many problems and, at the same time, learn stuff for other classes? Did your school help you focus solely on preparation for OI?

  • What motivated you the most (other peers, prizes, OI camps, feeling doing something special)?

  • How did meetings look like? How often did you meet?

  • How the collaboration between students was formed and fostered?

... Or perhaps you run your own class and you can tell us more how you do it. How do you spark students' interest? What resources do you use? Do you have strict teaching plan?

Please share your thoughts with us. Any help would be greatly appreciated!

Best of luck,

Tomasz

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

»
10 months ago, # |
  Vote: I like it +22 Vote: I do not like it

I was fortunate to attend a high school with great support for OI and especially a class that was meant for students who wanted to compete in OI.

In the first year, I was starting from scratch and mostly learned basic algorithms and data structures. We did have one or two CP classes per week but we still had to take all other classes, so it was quite tough to find time practicing. Once the school year ended, the 3 month summer holiday was probably the best time for us. We mostly solved problems on SPOJ back then and it was really fun when you were doing it with your friends.

When we were eligible for NOI in the second year, we had a school selection contest and top 10 would advance. Those who didn't make it would likely lose interest and no longer pursue CP from my experience (so it's pretty much the same the all or nothing game you mentioned). Once you qualified for NOI, you were exempted from all the school classes and able to dedicate all your time to prepare for it. This was huge for us.

We normally trained with the tasks our teacher gave us. If he was busy, we went to SPOJ and solved problems ourselves. There was no proper training plan though, as long as you knew all the stuff required for NOI (I was so stubborn that I didn't learn LCA until after failing to solve an LCA problem in my final year NOI). Apart from online judge, we also took part in COCI and USACO contests. Those are greatly useful and probably the closest to OI format.

Our school year consists of 2 semesters and the NOI is usually organized at the beginning of the second one. Prizes are awarded to roughly half of the participants and top 28 advances to the 2nd round. If you don't make the cut, you will come back to your normal school life (and have to catch up a bit for what you have missed before). If you do, well, you're done with the current school year.

To sum it up, I think it looks really challenging for you if the schools and students' families have no idea about these activities. Let's try to resolve this and hopefully you will be able to gain some support from them.

»
10 months ago, # |
Rev. 2   Vote: I like it +11 Vote: I do not like it

I'm from the same country as flashmt.

Did your school help you focus solely on preparation for OI?

No.

I once received a warning for not reporting my absence when I was competing in the first qualifying round of the NOI.

How did you manage to solve many problems and, at the same time, learn stuff for other classes?

I did not. I managed to solve many problems by setting aside 4 hours every day to train on Kattis, but because of this extensive training, I decide to skip some stuff that I did not find useful (I strongly advise against this).

According to this book, Grigori Perelman managed to do well in IMO and learn stuff for other classes. You can ask him.

What motivated you the most (other peers, prizes, OI camps, feeling doing something special)?

When I was in high school, I always wanted to be able to learn competitive programming from someone. I thought that if I passed the second qualifying round of the NOI, I would be provided "secret" extensive training from the best Computer Science professors at the time. I think that this was my main motivation.

Another motivation is that doing competitive programming is fun for me. The first time I competed in Codeforces, I thought that this is an educational game. My parents also thought that I spent 4 hours per day to play games on Kattis based on my reaction to the computer.

How did meetings look like? How often did you meet?

My school provided a room for me to host a competitive programming club.

At the peak of the club, there were four people. We discussed some basic algorithms and solved some problems on SPOJ together. We met about two or three times a week.

However, after everyone is eliminated from the qualifying rounds of the NOI, there was only me trying to visualizing advanced algorithms and data structure on a blackboard. I was able to use the room on every weekday.

After I left my high school, there was no succeeding generation, and the club dissolved.

How the collaboration between students was formed and fostered?

The collaboration was indeed formed and fostered, but after the students were graduated. I know that they do some Computer Science projects together, and sometimes help the High School Computer Science club grow when they are in college.

What is your advice in developing a successful Computer Science club in a high school with no support for OI?

Train people on aspects of Computer Science that look interesting than competitive programming. For example, I think it would be better for the club if I was able to teach the members of the club how to draw their worlds and animate objects on the computer screen.

Don't try to convince the members to go all in competitive programming. If the members do not convince themselves to take risks, you cannot convince them.

»
10 months ago, # |
  Vote: I like it +4 Vote: I do not like it

This is a 5-year-old story for me, so my memory can be wrong.

Did your school help you focus solely on preparation for OI?

We had a "mandatory self-study time" from 7PM-0AM where electric devices are forbidden (although I would say teachers are generous). However, I was able to focus on OI preparation by avoiding most of the self-study time. This is truly marvelous, given that SNU admission rate is the only way we measure schools(=teachers) in Korea, and OI doesn't help for it, and indeed I was rejected for SNU.

How the collaboration between students was formed and fostered?

We had a group of 5 to 10 people interested in OI. Mostly, they are not so stressed people who just enjoyed competitive programming. "It's difficult to advance to finals without systematic training at school and constant pressure from teachers and peers." -> I can confirm this is not true in Korea.

How did meetings look like?

Mostly we hold lectures prepared by students. We also had IOI selection mock contest, ICPC mock contest, CF round participation, gathering for non-OI exam study, gathering for video game :). I remember we had a birthday party where club members were treated with cakes, pizzas, and short contest. Meetings were not regular (but weekly in average), and it was held in a laid-back manner. We have teachers, but they never teach outside of their school class, they just hang out or help us in the organization. It's not like they are incompetent to teach, but we have a mutual trust.

»
10 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Are we talking about some school in Cracow? Maybe tell younger students to watch videos from "Olimpijskie Koło Informatyczne" that prepares for junior olympiad, and you should work with those more experienced for the main olympiad? It's this YT channel in Polish: https://www.youtube.com/channel/UCw1Z4iA0T-QNaJ-sEOXeYCw

You should discuss this with a teacher or a principal and make your classes more supported by the school. It would be nice if informatics teachers would advertise your classes. Maybe doing well should raise a student's final grade?

Consider creating a CF group and using old CF problems in a mashup contest that lasts a month or even a semester. I do that recently for programming camps and for my extra classes in high school (Staszic in Warsaw) and it works fine. There is a leaderboard and it provides some motivation to students.

»
10 months ago, # |
  Vote: I like it 0 Vote: I do not like it

you guys are getting students?