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