Sunday, February 19, 2017

CS education is poor because of copying

The CEO of Capgemini, Mr. Srinivas Kandula, has mentioned that 65% of IT employees are not trainable. We have all along been hearing that only 15-25% of the graduates were trainable and that the IT industry was only hiring from this group. Now, we are being told that even within this lot, 65% are really not trainable, and were presumably hired since there were really no option, and perhaps there was enough very low quality work to be done there. And now that the growth rate of the industry is coming down, and there is uncertainty in their largest market, it is perhaps better to recruit freshers for such low quality jobs than to pay for the experienced hands.

I do not know how much to believe Mr. Kandula. But I have always been amazed at the Indian software industry. That it can grow so fast and become so big despite the absolutely abysmal quality of education in our colleges. I have always believed that our engineering graduates have learnt nothing in most colleges, but in any large sample of population, there would be those who are naturally gifted, and who can be trained for anything, and my belief has been that IT industry is able to recruit people with minimal knowledge and train them for whatever they want them to do.

But apparently not. What Mr. Kandula appears to be saying is that a whole lot of people hired by IT industry have not picked up the right skills even after the training. Till now, when the going was good, both in terms of there being significant amount of low quality work, as well as in terms of good revenue that could be charged for that low quality work, it was ok to carry all those people on the roll. But increasingly, that is going to become a challenge.

Recently, I was on a selection committee of a government department to recruit programmers. The salary was very decent, and many people after several years of experience in industry had applied. What is the largest program in terms of lines of code that you have written in your entire career including college education. Typical answer: 100 lines. Can you write a program for binary search: NO. Can you write a program for just traversing a linear linked list (no trees): NO. Can you reverse an array without using another array: NO. Can you just exchange the values of two variables given a temporary variable: Mostly, NO. These are all the programs we ask our first semester students who have never programmed before. Have you ever been to sites like codechef: NO. Have you ever contributed to any open source project: NO.

I have the same experience when I sit in MTech interviews. And remember, we are only interviewing those who are among the top 1-2% in GATE.

Why is it that graduates of CS programs after 4 years know pretty much nothing. (Another data point: Once, GATE office shared with me detailed data about the previous years' paper. The shocking part was that the median GATE score was 0. This was more than 10 years ago, but I don't know if there has been any improvement in this period. More than 50% of the students who gave GATE had received 0 marks or less.)

A lot of people have talked about poor quality curriculum, poor quality faculty, poor infrastructure, poor school education, and so on. I disagree. All this can not lead to such abysmal quality of graduates. And all these explanations are only to take away the blame from students themselves. There is a much simpler explanation for this: Copying in our colleges, besides laziness.

How did a student pass the course on programming, if s/he never wrote programs. One can see that there are multiple courses in a typical CS curriculum that requires a whole lot of programming. Very simple answer is that only a few students write code, and everyone else copies. And everyone gets close to 100% internal marks.

Programming is the most basic skill for anyone working as a programmer/developer/software engineer, etc. If a graduate can write a 200-line Java program and a 20-line Python program, they can not only find a job, but also climb a few steps in industry. (Of course, if you want better jobs, and better careers, you will need to learn a lot more.)

Is faculty so poor that they can't even teach just 3-4 courses well (out of 40-50 that a student will do). Even if that were the case, there is enough online material to learn programming, data structures, algorithms, etc. Colleges that want their graduates to get jobs can do something very trivial. In just one course every semester, ensure that students do not copy. If they do not submit original programs, they fail. Checking copying is very simple these days.

Why don't colleges do such a simple thing. They can immediately improve the quality of graduates without any investment. But colleges should do it at their own risk. I know of one college which tried this. Every single glass in all buildings were broken by the angry students.


  1. Sir CS is not alone its same almost in all streams. Even this thing starts from schooling, even the mandatory projects students need to submit for XII CBSE as part of practicals is done the same way.

  2. So true.. could not agree more. I am myself from IT background and of late for a handful long while, the quality of freshers and even entry level lateral hired ones are way below par. Its like spoon feeding for months before getting them to some extent of being up to the mark and being a bit self-sufficient.

    I speak out of experience for real delivery, for like top biggies Clientele including that of fortune 500, 100 and even 50.

    Worst ting is somehow when the magnitude of project and team is so huge and aggressive with agility that at times the sub-ordinates inefficiency sneaks out and is exposed to Clients & Business. This really fatigues and kills the rapport not just of the team, or organization but also perhaps juxtaposing the shining intelligent image that Indian IT workforce has built over last 2 decades.

  3. Unfortunately, this is true - minus the programming part - about most other engineering courses as well.

  4. Before doing that, you need to address the core issue. Why do students copy? Simple, because either they are not interested in what is being taught or they don't have time.

    Im myself interested in Computer Science but my major isn't C.S. So I copy my way through the assignments but whenever there is a course related to programming/c.s I make sure that I understand that to the depth of it and submit all assignments by myself.

    Most probably those kids aren't anymore interested so you can provide them an option to drop out of their course and choose whatever they like to study. These days kids are more interested in making their future in Management (M.B.A/Economics etc), so allow them to take those classes. Atleast let them do what they're interested in.

    I cannot imagine the pressure on myself If my college has the equipment/software to check plagiarism on my assignments. It'll be difficult for me to handle that as I'm not interested in what I'm studying and the college won't let me choose Computer Science as my major. So kill the problem at it's root. Allow students to study whatever they want. Sadly, with

  5. People get what is paid. Starting salary given by MNC is so low it takes 6 month time to buy personal decent enough laptop. And CEO is paid in crores and not to forget perks of top managment

  6. People get what is paid. The starting salary in so called MNC is so huge that it takes 6 month salary to buy a decent enough laptop to get modern programming. Coding requires laptop and self practise. Not to forget the ceo who donot code is given a high quuality mac and programmer the bread and butter is given a outdate laptop.

  7. In the city of Hyderabad majority of the students are in to engineering due to fee reimbursement they never pay any attention to any class and a lot number of managements are also encouraging for their own purposes. Let's hope it will change now at least after the implementation of biometric attendance.

  8. Most of the engineering graduates are forced to do these courses due to severe pressure from their parents, unless in other countires of the west they have the choice of their own. Many of them lack interest, and do these courses for someone else and not for shaping thier career. Faculty who teach in engineering colleges, just have degrees and 90% don't have trianing in psychology and pedagogy and other skills. Education is just another business for most of the engineering colleges, if it clicks they continue, if not they sell the land for real estate and make money. Change is inevitable in the very long run. Patience pays every systme fails at one threshold and another one emerges from it.

  9. Dear Dheeraj,

    I began writing a comment here but it became so big that I moved it to my blog; please see here:



  10. Copying code per se is not the real issue. Nowadays experienced developers and lead engineers also do it.

    The software world is awash in code. There are places like Stackoveflow and Code project that have snippets, examples, answers to how-to questions on any programming, design or database topic that you want. The technology landscape changes all the time. The real issue is understanding a piece of code, a design issue, a risk or a customer requirement.

    The best brains in the world have already solved many problems in great detail. You can immediately access those solutions. The challenge is understanding the solution, where it can be applied, who you can tap for trouble-shooting and how to collaborate "virtually". It is best practices, code reviews, test packages and algorithm design that are more important than knowing all kinds of sorting, hashing and red and black trees.

    Modelling the world is the key. Indian CS education and every other syllabus (like ICSE) is breadth-first in its approach, and wants students to swallow and digest impossible amounts of information. There is no time for such digestion. That is why many resort to copy-paste.

    Faculty are too ivory-tower oriented and not many have felt the pain of the business, corporate and start-up world. They are secure in their tenure and never have to account for mistakes and failures in projects and products. Seldom do they have deadlines (except in finishing portions). The culture is hand-me-downs, not engagement with the class. Its very different from the way it is done in UK, US, Europe or Australia. Look at the quality of the online courses and MOOCS from Stanford, Cambridge or Oxford. Much to learn in course design.

  11. It is simply true, It all starts at School...

  12. You know who the real culprit is. It may sound cliche but the real culprit is our education system which teaches us to do rote learning from very early years of our school. Slowly slowly it becomes a habit for us. So much so that we cannot get out of it. Now some become very good at it and some cannot.

  13. Hi! I'm Akash, 2nd year student of IIIT Vadodara. Being a student myself, I see the environment from the student's perspective. I agree that "code copying" takes place many-a-times. But, I think that those who copy need to be identified by the teachers so that they can be motivated to code instead of copying. In the present system, a student is graded only by his grades. This is the main reason for the "copying" problem. If we cannot change the system entirely, at least we can improve the existing system internally so that we may yield better results.

  14. Sir, sometimes these students copy because they don't see any incentive of doing original work. In many of the 2nd rung institutes, professors expects the answer to match the text from textbook. If a student writes a code that is different from the way professor taught, the student is not awarded marks even if the code works as expected. Because of such negative response to a student's creativity, the student doesn't attempt to standout from the crowd and decide to copy as-is, as otherwise, their grades get affected. Also, university exam paper evaluators are given a blueprint of the answers for a paper. In many cases, evaluators don't bother to go through the whole answer and if they find words mentioned in blueprint and if answers are long enough (you read it right), only then do they assign better marks. I know, it may sound inappropriate to many, but it's the harsh truth that many of the engineering students have faced in their college life.

    To promote creative zeal to learn more, analyze more and explore the subjects more, following can be done:
    1. Appreciate the hard work and creativity of students.
    2. Promote creative thinking for answering questions instead of rote and vomit type of questions of answers.

    It will take time, but it would surely take the students away from the mindset of copying to a mindset of rational thinking.

    P.S. My intentions are not to hurt feelings of any teacher. I am just sharing my observations. Do correct me, if my reasoning was inaccurate.

  15. Completely agree final year projects all CS students and all branches students are just buying or get it done from someone like client to score marks .
    They don't have petions to deal with problem , expect ready made solutions....
    Engineering is to convert problems into solutions but due to bad system and attitude freshers becomes problem....That is the reason no one bank on freshers , but from where we get experienced one ....again may be fake experience the earliest everyone has to start fight against non productive engineers #FightAgainstNonProductiveEngg

  16. Besides above, I also had several comments on Facebook and Twitter. While many comments have been in agreement with what I have written, some of them tried to give not just explanations, but unfortunately, even justifications for this. Let us see a few comments:

    1. They learn it in schools. Can't expect them to change now.
    2. Teachers to blame. They give boring problems.
    3. Internet to blame. If a problem can be searched on Internet, it is ok to copy.
    4. Everything is fair in love and war. If copying gives students some competitive advantage, they will do it.
    5. Teachers to blame. The problems are sometimes too difficult and students have no option but to copy.

    Well, I don't consider any of these as good enough justifications for copying. But it does not matter. The only point I am really making is that if you copy and don't learn even the most basic skill that a computer science person should have, don't blame others for a poor career.

  17. Several comments, perhaps disjointed.

    1. Everytime a student copies, the teacher and the system has failed her/him.
    (On an average)The teacher's expectation is for every student to get grade X, that is exactly what they will get. Perhaps communicating the big picture of why we implement binary search algorithms is just as important as teaching the binary search algorithm well.

    3. Without sowing the proper seeds you cannot get a good harvest. Have you, as a professor, ever justified why computer science needs to be taught/learnt in the first place? Why should a student listen to what you are saying in class?
    Corollary: Correlating students to crops is despicable and yet that is what a software professional will be in the eyes of the likes of Mr. Kandula. If he wants copies/units/entities, I don't think copying should be an issue :)

    4. Choosing the door without knowing what is behind it. (This is the worst reason why)
    Most of the students doing CS don't want to do CS! Yet for some reason the education system makes a 16 year old choose what he wants to do for life without knowing what he's in for.

    While treating the superficial symptoms might make someone seem like a good doctor for a day or two, treating an underlying mechanism etches their name in history.

  18. @Varun, If your point is that poor teaching justifies copying and other acts of academic dishonesty, I don't agree, and it does not solve the problem anyway. As I see it, there are enough opportunities to learn without being dependent on colleges and teachers, particularly when it comes to basic skills like programming.

    1. @Dheeraj while that wasn't my point, you seem to be onto something. Maybe we should rephrase the statement above. When you have such vast learning resources, why does a student display apathy for the subject(leads to copying)?

      It is simply because they have no desire for the subject. This is a product of poor teaching. The reason we have a teacher is for him or her to kindle a desire to learn.

      In response to this: '''As I see it, there are enough opportunities to learn without being dependent on colleges and teachers, particularly when it comes to basic skills like programming.'''

      There are precomputed search results in Google but I need to have the desire to search for something.

  19. Why don't you test your opinion before reaching any conclusion? Keep all attributes same and remove the copy attribute, don't allow students to copy. I will see how students will magically start learning. I have taught students who are told disengaged and useless in schools. Here are the results.They learn when I teach Python.

    Reasons: 1) Because I follow project based books that are written according to the strategies of effective learning
    2) Teaching form where they are, giving details based upon their mind, not with my mind level.
    3) Giving them hand ons in the computer itself, so that they can debug, manipulate and play with the code. What will happen if they change the code? Why this, not this? I don't teach them with pen and paper.

    They learn organic chemistry when I teach them with book Davin Klein. They can do the book exercises.

    Still our education system will treat them as failure, because it doesn't permit them to learn at their own pace taking account with their previous knowledge. We can't expect every one to be in rat race and rote learn 24x7.

    Our eduction system tests not on what the students learned, but based upon mercy of teacher questions, doesn't matter whether students knows it or not. Teachers test only to test, not to improve their learning.

  20. @Varun, I am not denying that there are issues other than copying. I am not also going to suggest that teachers are all great. However, I feel that copying is a significant part when it comes to basic skills. We need good teachers to teach them OS, Netowkrs, DBMS, AI, Machine learning, and all the advanced skills that would help them in their careers. But for programming, which will at least give them an entry level job and if they can learn to learn themselves, can keep giving a push to their career, I think the need of a teacher is somewhat less on one hand, and there is indeed availability of such teachers in many colleges even today.

    Second, I think the problem is not that a poor teacher kills their interest. (It has a role to play, but not the most important role.) I believe (based on my experience) that because of our schools, societal value systems, etc., the students are only interested in short term goals and not long term goals. The short term goal is to get a good grade. And if copying can get me a good grade, so be it. The long term goal of learning and a career occurs to them only a month before the placement interview. And that is too late. A bit of pressure while the course is being taught will push a large number of these students to learn. I have seen enough examples of absolutely fantastic teachers (and I will sit in their classes to learn tricks of how to teach well), but students have no interest in attending classes, or doing any work, since they were promised right at the beginning of the semester that it is a Pass/Fail course, and everyone will be given a Pass grade. I have also seen in many instances that a bit of pressure (in terms of checking for copying) does result in a lot more students learning the skills better.

    Third, to an extent, I am arguing that when it comes to academic grading, the only thing that matters is learning. If a course had a goal that you will be able to write certain types of programs, a pass in that course can only be if the student can write some of those programs. To suggest that the student could not write those programs because teachers were bad, is almost saying that the student should be passed even if s/he could not write those programs. Well, would you or anyone else say the same thing about a medical degree. If a student in a medical college goes to his/her faculty (who, for the sake of argument, is not a great doctor/teacher), and says that I just want a degree so that I can sit for MBA admission or become an IAS/IPS officer, would you suggest that the student be passed since it was not his/her fault that the teacher was bad. I think there should not be any compromise with the academic evaluation.

  21. In my college LNCT,INDORE.There is a assistant professor named Pawan Patidar. He always ensures that students does not copy programs.They are only allowed to write programs in there file if they genuinely made it.
    If copying is found he literally tear down the file/mini or major file report in front of students.
    So, I think my college is good.

  22. EVEN THE FACULTIES IN MOST OF ENGINEERING COLLEGE(Excluding a handful top college in India)CAN'T WRITE 50 line C code or program for binary search....
    It is from both sides. Faculties don't teach practical skills, they themselves are not aware of them...Students don't learn skills..

    Giant IT companies don't wanna hire people with these skills. They wanna hire fresher with low salary and than train them for cost cutting. They will hire the person who know how to code and who doesn't know how to code at same salary. They even don't have coding test before hiring. Why are they complaining.

  23. @Aekansh Kansal, If a faculty can't write 50 lines of code, or the industry will not ask for coding in the job interview, it is ok to copy in the programming course?? Unfortunately, most graduates with this thought process don't get jobs. Each such student has two options: Crib, or learn.

  24. Ofcourse, Copying can't be justified by any of the argument. But many student think it natural to copy things. They don't believe that It is meant to be coded by them. They think that they are unable to code the program.

  25. I agree with your views professor. I am not in IT exactly, but I do work on a lot of code, because software nowadays, is everywhere. I have come across a number of individuals who cannot do basic engineering stuff (even rational thinking or understanding somebody else's logic) despite their graduate, post-graduate or even doctorate degrees.
    It is possible that higher education in a very niche domain may sometimes make one forget some basic stuff. But frankly, in that case you can make out that the person understands the logic or has a logic, even if he/she does not remember the technicalities. That is good enough.
    I agree that despite the quality of education and other factors, the onus is on the student to learn. There is no dearth of resources online or even learned people in our country.
    However, with regards to It companies - one must frankly point out their hypocrisy. These people were very comfortable in carrying the system along as long as it served their interests, but begin to complain the moment there are losses. And frankly, the thing that they call "on the job training" is tailored to serve the company's interests, and does nothing for an individual. No wonder employees are left clueless.

  26. The problem Sir, as it seems is lack of proper Computer Science Curricula in our schools. Students fail to understand what computer science is all about. They take up computer science after cracking JEE, observing that there is a demanding market. Yet they don't posses the skill and enthusiasm of extreme analytical and logical thinking, and the sheer joy of solving problems and puzzles. There precisely according to me lies the problem, if you are not in love with the work you do, you cant really create wonders in it. Moreover a high score in JEE is not a definite proof that one has the potential of being a computer scientist, because physics and chemistry might be important for understanding other engineering disciplines, but not really computer science. I had no problem reading through THE DRAGON BOOK in class xi and making this - Pseudogen; and I really didn't need any knowledge of physics and chemistry. Maybe we should start a paper of Computer Science in JEE, to really filter out people who are pssionate about CS, and theach them and nurture them if we really want to improve CS education.

    P.S.: I am an undergraduate in CSE not from any prestigious institutions like IIT or NITs