In a study published at the Proceedings of the National Academy of Sciences of the United States of America in March 2019, the researchers led by a Stanford professor observed that Computer Science skills of the fourth-year computer science students from the USA exceeded those of our students in India. Among the three countries of China, India, and Russia, which the study compared against the USA, India performed the worst. What is shocking is that graduates from the Indian elite institutes also performed worse vis-à-vis students from the elite institutes in the USA. So far, we believed that while our graduate programs lag behind those in the USA, our undergraduate programs are comparable. But that is not true, even for elite institutes.
If you look at what skills did the study used, it is about applications of the core fundamentals of computer science. In other words, it is not about knowing definitions, rules, theorems, and algorithms but the use of all those to the problems at our hands. For example, knowing scheduling algorithms for an operating system does not mean one is capable of selecting, adapting, and instrumenting those algorithms to get the tasks done optimally. The skill is not super special, which is required only for the higher studies. It is even more basic than that. When our students graduate and join the industry, they feel lost because they cannot find which concepts to apply to complete their assigned tasks. The AICTE and the stalwarts of the Indian IT industry, such as TCS, have been saying for a while that our graduates are not ready for the job when they graduate. They call this capability as employability. It is an implication of the same skill. The graduate schools and industry spend their considerable resources, in terms of time and money, in imparting the ability to the freshly hired graduates.
What is the reason behind our students lacking this skill? Of course, the USA has older institutes and have more resources. But as far as computer science programs in our elite institutes are concerned, these are not the pressing reasons. Is it because our syllabus is outdated? In most of the cases, it is NOT, indeed not at our elite institutes. Besides the foundational computer science courses such as Operating Systems, Computer Networks, and Data Structures, we are also teaching the specialized ones such as Machine Learning, Artificial Intelligence, IoT, etc. at our institutes. Then, how do we improve the quality of our students? Can we do something in our teaching and evaluating?
When we teach the core fundamentals in isolation, without connecting those to practical or real-world scenarios, the students cannot make a mental model of how to map a given situation into an abstract question for which we have a solution. From a teacher's perspective, this may be either trivial or not important, and hence neglected. In effect, the teachers end up putting more emphasis on detailing the solution in the abstract. Even the assignments and examinations evaluate students on their knowledge of solutions. Instead, the teacher must take practical scenarios to illustrate (a) how we can map those scenarios to an abstract problem and (b) how we can summon our knowledge of the fundamentals to devise a solution. The effect will be amplified if the teacher takes scenarios from the day-to-day lives of the students. Yes, this requires imagination and awareness of current affairs on the part of teachers. But indeed, it takes fewer efforts compared to creating more courses.
If you look at the courses in the American institutes, even their online courses, there is a significant emphasis on the application of the learned concepts. For example, the Operating System course at Stanford University asks students to implement scheduling algorithms to a working operating system. Andrew Ng's based a quiz for his Deep Learning course on Coursera on the data collected in a real production application of detecting images of birds. When students acquire the skill of applying concepts to problems, it helps them to turn their assimilated knowledge into power. Although we take examples of Computer Science, the message applies to all the disciplines. Our institutes need to encourage teaching of the problem-solving skill, even if it means cutting down a bit on the num-ber of concepts taught in our courses. After all, what is the use of knowing plenty of theories but not knowing which one to employ to solve a given problem? With this skill, not only our industry will get an employable work-force but our higher degree programs will also get better researchers.
Ph.D. is a Professor of Computer Science at BITS Pilani. He has taught at IIIT Delhi, IIT Bombay, and IISc. He has received Teaching Excellence awards at IIIT Delhi. In 2016, he was awarded the Gandhian Young Technological Innovation Award.