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.


Wednesday, September 9, 2020

Why should you (not) do MTech

 The admission to MTech programs to all CFTIs just finished. And, I am wondering if all the excitement of getting admission is really worth it.

Two months ago, I wrote a blog about why some of the Tier 2 institutes should consider closing some of their MTech programs. The argument was that every institute should always review each of its programs for their success, and if a program is not successful, it should be closed and the resources can be invested in either another better, more topical Masters program or increasing seats in other popular programs. And I would like to look at the output of MTech programs in the following ways: How many students publish their research work in decent venues? How many of them go for PhD? How many of them get jobs which are specialized and where BTech would not have been preferred? How many of them get jobs which a BTech can do but with significantly higher compensation? If you are able to attract a large enough group of student (anything less than 40 is very inefficient use of faculty resource) with good GATE score, and a majority (say 60%) of them do well in terms of criteria of research/jobs/PhD stated above, then that program is worth the investments. Otherwise, we must think of something new.

Of course, if we were to insist on this criteria, then a very large number of MTech programs will close in the country, which is probably good because this shows that most of the students and employers do not value Master's degrees, at least not the ones on offer at this time.

While it may not make sense for a college to offer MTech program, does it make sense for a student to take admission in an MTech program. Actually, the two questions are linked. And if it makes sense for a college to offer MTech program, it would make sense for some students to join that program.

Why should someone join an MTech program. Obviously, they should be looking at this as furthering their career in some ways.

Are they interested in research, and are just testing the waters by doing a small thesis and if they like it will go for PhD. Hardly. Not only the number of students going on to do PhD is tiny, even publications in decent venues are too few. In fact, I wonder whether they looked at the research output of the department before applying for admission.

Are they looking for learning new knowledge and skills that somehow they couldn't get in their under-graduate programs. I guess a whole lot of students are hoping for this and think that this additional learning will help them in their careers. And indeed, I have myself talked about this to encourage students to go for higher education in the past. But things have changed in the last 10 years, and Covid is going to strengthen the impact of those changes.

What has changed is the availability of online learning with higher quality than in the past. So much so that often the online learning from the best teachers in the world is better than in-class learning from faculty of our tier 2 institutions. Also, online learning allows you just-in-time learning, that is, learn those things that you know you will need in the next one year or so. You don't have to take off for 2 years. And what is also happening is that today when you switch jobs, they are increasingly putting a value on your experience, performance and knowledge and not whether you have a Master's degree or not. And this trend of valuing knowledge and skills over a formal master's degree will only be strengthened post Covid.

If we look at what is happening in US, Masters programs in technology areas are attracting a lot of foreign students who are doing them for the reason of ease of immigration. If we consider US residents, a large number of them are moving to online programs.

What this means is that if you have got admission to a top quality program, then you may prefer MTech from there, but otherwise, joining a job and learning on the side through online medium, is a much better option for career progression today. It is already starting to happen with lots of students from good institutions who earlier would aspire to do MTech at IITs don't take GATE.

For example, if you think learning about AI/ML would be useful in your career, do a few courses on those topics online (or if someone offers evening/weekend classes in your vicinity, go there). May be just a short-term course organized by your company is going to be good enough. After a couple of year, you may feel that learning about economics will help you in your career. Well, go and take a couple of courses on that, and so on. You will need to have life long learning and doing a master's degree will have limited benefit.

A lot of students believe that the placement improvement that they would have after two years of MTech in a better branded institute would be so substantial that it is worth spending those two year. I frankly, don't see that, at least not when you go to any place other than the top programs. Two years' experience would invariably give you higher increment than an MTech from a good enough college, and remember you are losing two years' salary too while doing an MTech.

My belief is that students who do MTech from Tier 2 institutions do it because they look at the investment at zero. They will get a stipend which is good enough to take care of all costs, including tuition. They don't consider the lost wages for these two years in their cost-benefit analysis. And hence, even a small increase in placement package makes them happy. Obviously, not counting lost wages as cost is erroneous. In fact, if institutions increase the tuition so that the stipend is not good enough to take care of all costs, one would immediately see a significant decline in MTech students, not because parents couldn't afford a small cost compared with the under-graduate cost that they have already borne, not because getting bank loans is more difficult, but because the cost-benefit analysis will now show that it is no longer worth it.

At the end, I would still encourage students to take GATE. I continue to believe that it is not too difficult to get a 600-700 score in GATE which is good enough to get admission in a top quality department in the country. Gaining experience from a top ranked department would be useful beyond learning. But for most people MTech is a poor investment and it makes sense only when you don't put in two year's salary into the cost-benefit equation.