Search This Blog

Thursday, September 24, 2020

Stop studying CS if you want to study CS

Strange title, isn't it? But this is exactly the advice my son, Udit, received from a lot of well wishers as he entered 11th class last year. If you want to study Computer Science at one of the top institutions in India, then you must not spend time on anything to do with Computer Science for the next two years. Just focus on Joint Entrance Examination. Just study Physics, Chemistry and Mathematics.

He had started JEE coaching last year soon after we shifted to Chandigarh, and he was doing extremely well. He was being advised that he can get a rank in top 100 which will allow him to study CS in IIT Bombay or IIT Delhi. But he had to give up programming. He was asking us, why should he give up computing if that is his passion and that is what he wants to study. And as a father (and even more as a Professor of Computer Science at an IIT), I had no answer. So he continued spending some time on programming, participating in some contests once in a while. Besides, we insisted that he spends about 1.5 hours a day on sports, exercise, and in general, keeping fit. My friends were aghast. Some even commented that I am jealous and am encouraging this so that he is not able to get a JEE rank better than what I got 4 decades ago.

This year, he represented India in the International Olympiad in Informatics. And he has brought a Silver Medal for himself and his nation.

While his performance is primarily because of his hardwork, perseverance and intense focus, we as parents can take some credit, at least to the extent that we didn't interfere. We didn't force him to spend all his time on JEE, but let him balance his passion, his school and JEE coaching. And frankly, we could do that because of our privileges. As an IIT Professor, we have good salary, and we can afford quality private education, including abroad. As someone in academia (that too in Computer Science), I knew that places like IIITD, IIITH, and CMI were better than most IITs. I also knew that there are enough people and more who study in next level institutions and do extremely well in their lives. Hence we could tell him not to worry too much about JEE. The important question that the educationists in India need to ask is how many students in our schools can follow their passion, the way Udit could.

This achievement enables him to seek admission in a lot of top institutions around the world. In India too, two institutes have normally given admission to top programmers like him. They are Chennai Mathematical Institute, and International Institute of Information Technology (IIIT) Hyderabad. Another institute makes it very easy for such students to get admission. Indraprastha Institute of Information Technology (IIIT) Delhi will provide him a benefit of about 20,000 ranks (2 percentile) in JEE Mains.

India has been an average performer in IOI, which is not bad, but considering the size of the country and the fact that we have aspirations to be the center of the world as far as IT and software business is concerned, being average is not good enough. But if every school going student will be advised not to do programming, we aren't going to do much better.

This lack of programming culture is not restricted to schools. It also reflects in our engineering graduates. Less than 2 percent of IT graduates (those whose bread and butter for four years should have been programming) can write functionally correct and efficient code as per a survey by Aspiring Mind in 2018. All IT services companies have extensive training programs for fresh college graduates, sometimes lasting as long as 6 months. Besides learning how to code has the side effect of learning problem solving skills, learning how to organize your thoughts and express them logically, very important skills for the career. And we tell all our school going students not to indulge in programming as it will reduce their chance of studying Computer Science in a good institute.

Not surprisingly, our most passionate programmers join CS programs outside India. In the last 10 years (2011-2020), there are 16 medal winners who have joined college. Where have they joined: Five in MIT, Two in NUS Singapore, Two in IIIT Hyderabad, and one each in CMU, Stanford, USC Los Angeles, Drexel Univ, Univ of Waterloo, CMI Chennai and IIT Bombay. Most, if not all, of 15 students who did not join an IIT did so because they did not take JEE or did not have a good enough JEE rank to join IITs at Bombay/Delhi/Kanpur, etc.

We have two options. We can either label them as lacking merit and feel good that people are using MIT as a backup for an IIT. Or we can look back at their trajectory and see if despite their not studying at IITs, how have they done in life. And if they have done well in life then may be grudgingly admit that Indian institutions missed some really good students. So over the last weekend I searched for all medal winners right from 2002 Olympiad, and searched for them in social media, and google. And I found out that many have done PhDs from top universities and are working on cutting edge technologies mostly in industry (Google seems to have many of them), but some in academia as well. So, I would believe that IITs and other top institutions in India would have been enriched by their presence.

Last time, I talked about it was in a newspaper article a few days ago. And I was told on social media that competitive programming creates bad programming habits. I know my son had to study a lot of Maths early on to be successful in competitive programming. He understands complexity, has studied several advanced data structures, algorithmic paradigms, and what not. When faced with this criticism of competitive programming, he decided to check for himself how useful he will be in real life. He joined a startup for an internship in class 8th, and the founder told me that Udit was productive within a couple of days. He may be special, but I think criticism of Competitive Programming is hugely exaggerated. And what is the alternative people are suggesting to CP. Well, don't do any programming. Just study Physics, Chemistry and Maths, or just study for board exam in programming. Give me a break.

In school, currently, one is forced to take a huge bet. When you start spending time on programming, you know that if you reach top 4 of the country and then win a medal in IOI, you can easily get admission in a top foreign university. If you reach top 30, you can get admission in CMI, IIIT Hyderabad, or IIIT Delhi. But what if you don't reach top 30 in the country. You have not prepared well for JEE and you have nowhere to go. To really encourage students to follow their passion in programming, one will have to ensure that top programmers have access to quality CS programs, not just top 30, but top 300 to begin with (roughly the number shortlisted for Indian National Olympiad in Informatics). You will immediately see the change in coding culture in India. And I am convinced that if school children start doing programming (not for board marks but for something that the world trusts) India would truly become a global hub for software industry (not just services, but applications, and also new technologies like AI, Robotics, IoT, etc.).

When India started participating in IOI, there were even fewer school students interested in programming. At that time, Chennai Mathematical Institute (CMI) played a very major role in giving a push to programming. Not only they offered to hold training camps, their faculty would be the local organizers, and the leader of Indian team in the competition, but they offered admission to everyone who is in top 30. If you look at what did medal winners do in early 2000s, a large number of them joined CMI. They were telling school students, go ahead and follow your passion. If you do well, we will admit you. Now, we need to increase the numbers by an order of magnitude, if not two orders of magnitude. What CMI did in early 2000s, a lot more institutions need to do now.

I hope a day will come when in India, no student will be told that if they wanted to study Computer Science, they would have to stop spending any time on programming.


8 comments:

Ravi Ranjan said...

It's likely a general direction for most students but not for the likes of Udit 😊

Forty One and a half said...

Sir a very well written article indeed. In our time, physical education was the go to subject for everyone preparing for iit

Nishant Dhankhar said...

I agree. I did not get a top 500 rank (for old IITs CS) and my parents are blaming me for doing Computer Science before for it. I have attended IOITC twice and IMOTC thrice, and doing these does consume time, especially as they are not related to JEE syllabus. This year, the extra 6 months improved my JEE preparation though.

I believe that even top 30 (or even IOI) is also not a guarantee. IIIT-H interview is a bit weird, as it does not even take IOI team members sometimes. One member of last year's IOI team took a drop for JEE. So even IOI is not a guarantee.

Dheeraj Sanghi said...

@Nishant, I am realizing that IIIT Delhi is perhaps the best bet for anyone doing such interesting things. By reaching top 30, you are being given a benefit of 20,000 ranks. So you need to take JEE Mains and get a rank in top 20-25K which should not be a big deal for most, though I can imagine there will be some who will just don't have the motivation to do JEE coaching even for a few months.

jk said...

Sir , a very useful message for me. It appears that CMI is the place for new generation students. Maybe in a few years, it might happen that credit transfers between CMI and universities from outside of India.

Unknown said...

It is so sad to hear this truth. I started programming in 9th and then when my 10 boards came my mother stopped my programming as I was giving too much time to it. Got 93.5 in high school and then joined a JEE coaching in hopes of studying CS at a reputed college. My schedule was so tight that I did not even have the time to do other things. Just roaming from school to home, home to coaching, and coaching to home. I am jealous of your son, he got a medal in IOI. I also wanted to do the same. I am fearful now, that my passion may die till I get to a college.

Dheeraj Sanghi said...

@Unknown, my best wishes to you for your future. Don't let your passion die. Even if you can't do programming right now and have to study JEE, keep participating in a few contests whenever you want to take a break and when you finish JEE in 12th class, restart CP with gusto.

Unknown said...

In India, IIT coaching is a big business. The coaching mafia makes crores every year. They will not allow IOI to get into their business. Seats are given to students who mug-up and get high JEE ranks. These students get CS seats in top IITs. These students don't have any idea about programming and they practice how to write "Hello World" programs during their final year only. And children who excel in competitive programming don't get seats and are shown the door. What a pathetic situation this is.