17/10, morning assembly time at City Montessori School (CMS), Lucknow, Gomti Nagar branch: A group of five hundred students from grade XI and XII gathered in the main auditorium. I go up on stage to explain all these budding students the concept of competitive programming. “Hello juniors” “Well, any guesses as to why I called you all as juniors?”… “Hmmm… as many of you might have guessed it, yes, I gave my ISC board examinations in this very same auditorium this year only”. “Now coming to a formal introduction, I am Karan Saxena, a First year Computer Science student at Sir MVIT, Bangalore. I am the Technology Head at Google Students Club and a freelancer at JAR (Just Android Resources) – India’s first all Android magazine.”
I then go on to ask them the next question- “What is a code?” I am expecting some enthusiastic answers but my hopes are soon dashed to the ground as only two hands go up. Nevertheless, I call one of them up on stage to answer. “Code is a small part of a program” “Correct. But don’t you think that’s a very dull kind of a description?” I then give them an intuitive definition of ‘code’- “Code is Logic. It means understanding the process and making it simpler. It is converting simple day to day tasks into mathematical terms and symbols”, I explain. I then show them the video created by CodeChef. Next, the obvious question is ‘Why should I code?’ or ‘What kind of people should learn coding?’ For the answer, I show them the 5min version of Code.org video.
After these two videos, I go for an example of ‘Binary search’. Over the next few minutes, I explain them ‘Binary Search’ from grass-root level with the help of a presentation. Then I announce that I have a twitter sticker and whosoever will give the correct complexity of binary search will get it. In the intermediate time, I explain them the definition of complexity. A student comes up and gives a correct answer as O(log N). I see a puzzled expression on the faces of students. I then intuitively explain them how log N came and that log is with base 2 and not 10 or ‘e’. Over the next few minutes, I go on to explain them that how India is technologically progressing but it is nowhere when it comes to competitive coding. I tell them that the only solution of this problem is to start early, and the way to start early is to practice and participate as much as possible. I then explain them what is ZIO/ZCO, IOI and ICPC. I tell them that nobody has ever achieved a gold medal in IOI. I explain them about ‘CodeChef Go for Gold’ initiative and ‘CodeChef Lunchtime’ programming series and that they should start participating in it as early as possible.
Watch the video of the assembly here: Karan Saxena, introduces CodeChef to students from City Montessori School, Lucknow, India
Wrapping up the session, I invite the interested students to the computer lab where they can have a hands-on session and ask their doubts. About 30 students turn up in the computer lab and have conversation with me over the next one hour. It was nice to see the enthusiasm with which they put forward their queries. All of them left with a sense of satisfaction and eagerness to participate in the upcoming ZIO/ZCO.
Overall, I felt very satisfied with the session. It was small yet effective step towards promoting programming culture. I’ve done my class XI and XII from CMS only. It’s an outstanding academic institution and is counted among premier institutions in the country, but the thing I noticed during my time is that there is very less focus on programming, specifically competitive programming. Students are extremely brilliant here but only focus on science subjects and study computers only with point of view of examinations. I wanted to change this and hence approached the principal, Ms. Manjit Batra, who, gave me permission to conduct this session for the betterment of the students. She also allowed me to act as a mentor to the students and help them with their doubts and also to keep them updated with the contests happening. I’ve created a group on facebook where all the class XI and XII students can discuss their programming problems and solutions with other students from the same institution. All of them have my number and are welcome to call me anytime they feel necessary. I’m constantly in touch with all of them via the group. Many of them are participating in this year’s ZIO/ZCO and I’m hoping to get a good result from these students.
Lastly, I would like to thank the whole of CodeChef team for taking up this one of its kind initiative which will prove to be very useful for budding young programmers. I wish them a grand success in this endeavor.
As the time nears the declaration of the selected list of teams for the onsite, we think we must own up the mistake and issue an apology. We understand that there were some problems with the online round for ACM ICPC 2013 IIT KGP regionals. For those who missed it:
For the first issue, we investigated and found out that it was caused due to an un-optimised query that fetches you all the submissions of a particular problem in the practice section! We are in the process of fixing it, but we thought we should at least tell you what the reason is while the fix happens. To make up for it, we had extended the contest by another 10 minutes. We also eliminated all penalties for those who were affected by the slowness and ended up submitting the same solution multiple times.
The second issue impacted users much more. And we realised that we had goofed up, only after the contest. At this stage, we sat down and evaluated all the options to salvage the situation. We knew that we could not be fair to everyone from that point. No matter what we did from there, there would be one section who would be affected by this mistake of ours. Considering every possible scenario (including a re-contest), here’s what we decided to do:
Change the test data such that the solutions which solved the problem without sorting the output list also passes. This essentially also meant that the problem no longer required a DP solution to pass and became easier than what it was intended to be. We rejudged all the solutions which had not passed during the contest for this problem with the new test data, leaving aside those that had passed. This resulted in more teams now solving the problem.
Some of you are bound to feel (especially those who wasted a lot of time on this problem) that this isn’t fair. We know it, but there is not much that we can do about it. We screwed up, and we’re really sorry. Here are the other options and an explanation of why we took this approach:
While we acknowledge that we have goofed up and we regret it beyond what we can put across, we also think, that not being stuck on a problem, you are unable to solve, is among the many things that can propel your team to be a good ICPC team. A team of three wasting all their time on a single problem can cause a lot of frustration, but then that should not warrant wasting the time of so many other teams that have done well and also learnt to deal with such situations and got more efficient.
Some people will undoubtably feel like we should’ve taken one of the other approaches listed above. We’re sorry, we cannot do that. Don’t hate us. We know we have goofed up. And we did try our best to be as fair as we possibly can in the given circumstances. We wanted a good fair contest as much as you all did. We did receive some positive feedback on the problems being good as well. We have also published the editorials for the problems. We did try to do as much as we can.
For those who will not be able to make it to the onsites due to this mistake of ours, we sincerely apologise. We know, nothing can make up for it. But there is only so much we can do. Please do not get demotivated and do not give up. Please practice hard for next year. We will be around to help you all in your preparations. We assure you, that we will be extra careful next time around. We are sorry.