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.
Four hundred students are gathered in the school auditorium. I go up on stage to speak to them and try to explain what programming is. “How many of you know what programming is?”, I ask, with a lot of hope that at least I will see a hundred hands in the air – I just see twenty. It surprises me. This is a school in India and is a reputed one, very few have a clue about what programming is. The scene reminds me of the code.org video where no student says that he or she wants to be a programmer when they grow up. But, I see a lot of talent here. Later, into the talk I pose questions like the Seven Bridges of Konisberg, a popular problem in Computer Science taught to undergraduate students in university, quite a few of them are able to comprehend the solution and some are able to reason out the correctness of it as well. I think, “Well, there’s a lot of talent that is not being realized in schools in India, and programming can be a huge key to teaching kids a thought process”. With loads of eyes looking at me with a certain spark, I end my jargon speak asking “So, how many of you are now interested in programming?” and ninety percent of the crowd raises its hands – success!
It can get really taxing to introduce a new topic to a crowd that has never even heard of it. As one becomes more specialized in a field, it becomes even harder to generalize your topic of interest and explain it to a junta which is younger yet extremely interested and enthusiastic. My experiences with introducing programming to school students in two different schools were quite similar. I realized the challenges behind explaining something new to a crowd that was still starting off their explorations in the world of math and computer science. Hence, I outline here my experience with the entire ordeal along with a few points of advice that might help any volunteer on the way.
I was interested in sharing my programming experience with schools as I felt I missed out on knowing about a competition like IOI while I was at school. I felt that programming is a wonderful skill that teaches one how to think in an organized way and would really grab the attention of students still studying in school. Hence, I went up to the principal of my Alma Mater, Mr. Gautam Gupta from the Aditya Birla Public School and he allowed me to give regular lectures to the students of classes X-XII. I found out that CodeChef was also working on a similar idea and I asked them if they would like to collaborate. Hence, I signed up for being a volunteer with them.
I took two introductory sessions at two different schools – The Aditya Birla Public School, Renusagar and The Delhi Public School, Vidhyanagar. I hail from a place called Renusagar in Uttar Pradesh. Major challenges in this area are availability of a stable internet connection and the remote location which makes it hard for people to know about new happenings in the outside world. But, the principals of both schools were really receptive.
Both schools have CBSE as the board at the secondary and senior secondary levels. In fact, Dr. Janardan Pandey, principal, DPS, Vidhyanagar asked me about the differences between Python and C++ knowing that CBSE is planning to make a shift to Python for the computer science syllabus for classes XI and XII. He clearly realizes the importance of programming as being the next big thing and in fact, was really happy to see posters for LunchTime that I handed over to him. The posters were immediately scanned and emailed to all parents on the same day making it possible for parents to understand as well. I had a wonderful experience interacting with him.
At the Aditya Birla Public School, Renusagar, which is my Alma Mater, the principal, Mr. Gautam Gupta agreed to let me take regular mentoring sessions after selecting students from an interaction session that I took. The students have been quite regular and enthusiastic about these sessions that take place on the Saturday every week.
I will describe my experience with DPS, Vidhyanagar here, as the session at the ABPS, Renusagar was quite similar. The session was held in the school auditorium and was jam packed with students from class 9th to 12th. The crowd was really receptive and enthusiastic about everything that I talked about and it was fun to receive a nice round of questions in the end. The presentation began with the principal giving my introduction. Later, I stepped up on stage and introduced myself as well – telling the students my name, my school and my college.
Next, I asked the students if they knew what programming was, if they had prior experience with a programming language and if they loved mathematics. The response wasn’t huge in this aspect as most students actually didn’t know what programming was. I told them that programming is a way to instruct a computer to carry out certain tasks and gave examples how programming can be used by a biologist (to predict the epidemic of swine flu) or by musicians to compose music as well. I played the 1-min long video from code.org for the students and asked them to identify each person featuring on the video. It was a pleasure to see so many students laughing and getting excited when I asked them if they knew who Mark Zuckerberg or Bill Gates was. I also talked to the students about the movies, The Terminator and The Matrix, since students find it easy to relate concepts to these movies as almost all of the crowd had seen these movies and found them fascinating.
I told them about International Informatics in Olympiad (IOI) and how nobody has won a Gold Medal at it and about CodeChef promising to reward cash prizes to anyone who achieves the feat first from the country. I also told them about the posters for LunchTime that would soon be posted on their school notice boards. I told them about the Zonal Informatics Olympiad (ZIO) /Indian Computing Olympiad (ICO) and the camp as well and the nearest center for writing the examination.
It might seem impossible in the beginning to introduce things like graphs or binary search in the first session itself. But, I realized that examples of these ideas serve as good appetizers for students to get interested and they might want to start reading them up by themselves. One need not introduce data structures and any programming language in particular to give a taste of these topics. It was risky to do so and I did succeed in both the schools with two problems that I gave to the students – they understood and took them really well.
The first problem that I introduced was the following :
“Given a stack of coins, you can take out 1 coin or 2 coins from the stack at each turn that you are given. In how many ways, can a person empty the stack given a way is a distinct sequence of the number of coins remaining at each step till the stack goes empty”.
I went on to explaining Fibonacci numbers to the students, showing them what a tree looked like and how it can be used to count the number of ways. It always helps to give some hints at each step and let them figure it out. I took a small number for the number of coins in the stack (5) and asked them to solve for the same. Once some students shouted out “8”, I drew the tree and explained the solution to everyone else.
It was even more fun discussing the seven bridges of Konisberg and why an Euler walk can’t exist on a certain graph that I drew on the board. I didn’t specify the exact term “graphs” to them but rather preferred talking in terms of cities and roads or circles and lines. It became easier for the students once I took the names of neighbouring cities in this area. I allowed students to figure out an Euler walk for a graph that didn’t have one (all vertices with an odd degree) and it was nice to see students walking away with a smile realizing why their solution was wrong. Ultimately, when I announced that a solution didn’t exist, and on asking why so, one of the students pointed out that each circle (vertex) had an odd number of lines (edges) associated with it.
The session ended with a round of questions from the students and a vote of thanks from the principal. It was amazing to see such enthusiasm from students and on asking in the end, how many of the students were now interested in programming and learning more about it, about 90 percent of the crowd raised their hands – that was really overwhelming for me.
Embedded are a few pictures and a video of the presentation. Hope you find the concept of CodeChef for Schools really interesting!
I can be contacted at +91-9670623389 on weekdays till the end of September as I am joining Google, Mountain View in October and will be moving to USA. The CodeChef for Schools team is available at +91-2230797709 on weekdays from 9 AM to 6 PM.
Link for the video : CodeChef for Schools at Delhi Public School, Vidhyanagar