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.


Sunday, August 23, 2020

JEE (Mains) 2020: Spread it over 10 weeks

Admission to all CFTIs (like IITs, NITs, etc.) and a large number of other engineering colleges take place based on performance in JEE Mains or JEE Advanced (for which candidates are selected based on JEE Mains). So unless JEE Mains is held, we will not be able to have admissions in engineering colleges. Even other colleges which take admission on the basis of 12th class or state level exams would see a lot of students leaving when eventually admissions to CFTIs and other tier 2 institutions take place.

JEE Mains is held twice a year - in January and in April in normal years, and the better of the two performances is used for admission purposes. This year, due to Covid, April exams were cancelled, and it was announced that they may be held in June. However, in May, they announced that it will be held in July. And then again in July, they were postponed to September. And now, there is a demand by a large number of students that it be further postponed. On the other hand, there are many who want to get it over with. The uncertainty is causing a lot of stress to students.

I am trying to understand the arguments on both sides.

Those in favor of the exam being conducted in September are arguing that we have to learn to live with Covid, the life has to go on as close to normal as possible, uncertainty is causing a lot of stress, there is no reason to believe that the situation will not be worse after two months, and that if it keeps getting postponed, we will have to cancel admission entirely this year which will affect the career of a lot of students.

Those who want a further postponement of the exam are saying that situation is much worse now than it was when the exams were last postponed, that a few exams that have been held the SOPs were not followed, that the danger of a large number of people catching Covid is very high, and then there are practical issues like the number of exam centers being limited and hence some people having to travel hundreds of KMs to reach their center with no public transport, and no hotels open to stay overnight, etc.

A lot of these arguments don't make sense to me. That situation is worse today than it was when the exams were postponed is, frankly, a stupid argument. Because this argument is essentially saying that JEE Mains (and any other exams, including those in schools/colleges) should not be held for the next several YEARs. Why consider July postponement, why not March postponement. And real situation is likely to remain worse than March, 2020, for many years. But we shouldn't compare with the situation in March, 2020, since we are learning a lot about the disease, and today we have allowed a lot more things to happen than what was allowed in March, as a result of that knowledge. So, no comparisons with the past is valid.

On the other hand, an insistence on "life has to go on" by people who have all the privileges in the world seems cruel, to say the least. One has to take reasonable precautions in the middle of pandemic.

So the argument has to be something on the lines: Yes, there is a risk. Let us see how we can minimize this risk, and then see whether that minimal risk is worth taking given the rewards. Neither side is talking in these terms. (I find most debates in India are like this: One side only pointing to costs, the other side only pointing to benefits, and no one doing a cost-benefit analysis. And this debate is no different.)

What is the reward in this. Of course, admission to engineering programs and not having to cancel the year. As many engineering colleges have pointed out, they do not have enough infrastructure to admit twice as many students next year, if admissions this year are cancelled and hence it will not simply be a postponement, but cancellation or at least a serious reduction in opportunities for students. Let us take that on its face value though I think that this may not be true for all colleges. What is the latest by which admission has to be done. Well, for now, most of these colleges are thinking of admitting 2020 batch in the next semester which starts around Christmas time. And the loss of one semester to be compensated by working in one summer term, some reduction in curriculum, some overload in a semester, etc.

I think the colleges can postpone the admission by another 2 months, have the next semester take away part or full summer term and let these students use the summer term of 2024 instead for doing credits. So the argument of colleges that they can't afford to have 5 batches simultaneously on campus can be taken care of even if admissions are further postponed by two more months.

Of course, the question will be whether it will help. What if the condition continues to be grave. What is the cost we are willing to pay for this. On the cost side, one really needs to consider the probability of getting Covid (and protestors are wrong about seeking a guarantee that no one will suffer from Covid - there are no guarantees) and whether this chance is increasing or decreasing over the next two months, and a connected question is what is the cost of getting sick with Covid, now and after two months. If the probability of getting infection is such that a handful of people are going to get it and these handful are likely to come out of it eventually, we take that chance. On the other hand, if there is a chance that an exam might become a super spreader event, then we better not take that chance. How do we determine this. Well, what has been our experience in conducting other exams where a single center had 200-300 candidates, including many from far off places. Did they become super-spreading events. Of course, one side will point out that they did not become super-spreading events. The other side will point out that it was a matter of chance, since no one followed SOPs and are not likely to follow SOPs in JEE either.

But one thing that encourages me to be on the side of postponement is that the rate of growth of total numbers as well active cases has slowed down and the current predictions are, for the first time since we started having Covid cases, that we might be reaching a peak within a month or so. For first time, people are talking about rapid testing, vaccine being just 2 months away, many more drugs seem to be helpful in treating cases, the average hospital stay for cases has reduced, etc. As of today, the active cases are 7.1 lakh, and they were half of this 37 days ago, the slowest doubling till date. Similarly, the total number of cases are 31 lakhs, and they were half of this a little over 25 days ago, again the slowest doubling till date. (But I am still not going to suggest postponement, I have a different solution at the end.)

So, if I can summarize everything said so far, I think the risk of Covid has to be taken because the cost of canceling admission for the entire year is too high. However, it seems to me that we can use summer term of 2024 instead of summer term 2021 for this batch, and hence there is still time for admissions to be delayed and there appears to be some chance that Covid situation just might improve further in two months. And hence I would be slightly in favor of postponement.

But there is another argument that we have not taken into account yet. And that is the lack of transport and hotels. While most of the students live in cities (where the centers are) or within a small radius so that they can reach the center on the day of the exam, there are still a lot of students whose center is 100-300 KM away (and a few cases where they could not get their close by choices and have been given a far off center). With public transportation severely restricted in many parts of the country, reaching the center in time may not be easy. Remember that the candidate has to enter exam center by 08:30 AM. Give a bit of margin and it is clear that if you are dependent on public transport, you better reach the city a day in advance. But with hotels closed in most cities, or requiring a negative Covid report or having other restrictions, it won't be easy. And this is adding to the cost and stress as well. I think the logistics for an individual are quite daunting.

When I add the logistics to the earlier discussion on progression of disease over the next two months and possibility of delay in admission, I become more firm that we need to postpone JEE Mains. (But not by two months, keep reading for an alternative.)

Also, it may be noted that the monsoon season will cause disruptions in different parts of the country at different times. That Covid issue also will be more or less serious in different parts of the country at different times. So a uniform date is unlikely to be acceptable or even fair to everyone. 

Is there an alternative?

Yes, indeed, there is an alternative. NTA has 10 sets of question papers, and they are organizing 10 sessions of JEE over 6 days, two sessions per day. And they assign random session to each candidate. We can do things differently.

Instead of completing the exam in one week, what if we do that over 10 weeks. Every week, one lakh  or so students can register for the exam. So those who feel safe in their neighborhood now can take exam now, and those who think that a few weeks down would be better for them, they can take the exam a few weeks later. So those who are arguing for a delay of 2 months, can have a delay of 2 months.

Of course, what happens if a lot of students want to take exams 2 months later. The capacity of online centers is limited, particularly now with Covid precautions, distancing, etc. And what if the transport and stay restrictions are same two months from now. Well, the solution is that the 10th exam (and even 9th, if need be) would not be online, but will use OMR sheets. There is enough time for NTA to print enough copies of the papers. With offline exam, you can have centers in remote areas. You can ensure that there is at least one center in each district or 2-3 centers in each large district. Basically, if you ensure that people don't have to travel long distances, the number of candidates at each center is small, then the probability of infection is reduced tremendously.

Also, the session should be 2-5PM so that students can travel in the morning, reach the center, and go back the same evening, without requiring a place of stay in the city of center.

We could further announce that those students who have registered for JEE Mains and decide not to take the exam will be allowed to take JEE Mains 2021 even if this was under normal course their last chance.

We could further ask IITs to take admission based on JEE Mains this year, which will save us 4 weeks in the admission process. They could compensate by having a much more liberal branch change rules for this batch.

By the way, I am aware of the need for randomization of slots for JEE Mains for proper normalization. But I think given the pandemic situation, if the "merit" is not uniformly distributed in all 10 sessions, it would still be ok compared with the alternatives.