Monday, April 29, 2013

Should M.Tech.(CS) Project be CS Research Oriented Or Software Engineering Project Oriented?

Last updated on June 14th 2013

The first part of this post has some views of mine which have had the benefit of an email conversation with a correspondent and discussion with a senior Indian CS academic. The second part of the post has an edited version of the email conversation with the correspondent which includes the views of the senior academic.

For readers who do not know much about the M.Tech.(CS) program I felt it appropriate to provide some background information.

What is M.Tech.(CS)

An M.Tech.(CS) program stands for Master of Technology (Computer Science) and such programs are conducted in AICTE approved colleges/universities in India after getting approval from AICTE, http://www.aicte-india.org/, the key government constituted and supported technical higher education regulator of India. [Note this post does not focus on the elite technical education institutions of India, the IITs, http://en.wikipedia.org/wiki/Indian_Institutes_of_Technology, which also offer an M.Tech.(CS) or (CSE) program. The IITs cater to a small percentage of technical education students in India. The vast majority of technical education students in India are catered to by AICTE regulated institutions and this post has a focus on M.Tech.(CS) or (CSE) offered by such institutions.]

The M.Tech.(CSE) program, I believe, is very similar, if not the same, as the M.Tech.(CS) program. It is just a matter of nomenclature with some institutions preferring the Computer Science & Engineering name instead of only Computer Science. So, I believe, all that is written in this post about M.Tech.(CS) applies to M.Tech.(CSE) as well.

Eligibility Criteria for M.Tech.(CS)

I don’t think the eligibility criteria for an M.Tech.(CS)/(CSE) is uniformly defined by AICTE. Different institutions seem to have slightly different criteria. Here is one from a Bangalore, Karnataka engineering college, which seems quite typical:
“Candidates who have acquired BE/B.Tech/AMIE or equivalent degree in Computer Science / Information Science / Electronics & Communication Engineering / Telecommunication Engineering / Electrical & Electronics Engineering by securing not less than 50% marks in aggregate are elgible (eligible). However in case of candidates belonging to SC/ST/Group, the aggregate percent of marks in qualifying examination should not be less than 45%. The admissions are through central counseling on the basis of merit in PGCET or GATE. A few seats are also available under sponsored and Management quota. GATE qualified candidates are eligible for scholarship through AICTE.”
Source: http://www.rvce.edu.in/mtech_cse.php


PGCET seems to be the state level Post Graduate Common Entrance Test for the state of Karnataka. Source: http://kea.kar.nic.in/pgcet.htm.

GATE stands for Graduate Aptitude Test in Engineering and "is an all India examination that primarily tests the comprehensive understanding of various undergraduate subjects in Engineering and Technology. GATE is conducted jointly by the Indian Institute of Science and seven IIT's (IIT Bombay, IIT Delhi, IIT Guwahati, IIT Kanpur, IIT Kharagpur, IIT Madras and IIT Roorkee) on behalf of the National Coordination Board – GATE, Department of Higher Education, Ministry of Human Resource Development (MHRD), Government of India." Source: http://en.wikipedia.org/wiki/Graduate_Aptitude_Test_in_Engineering.

SC/ST group refers to SC/ST reservation, http://en.wikipedia.org/wiki/Reservation_in_India, which in the education system, provides for lower thresholds of entry and some other benefits to certain categories and castes of Indians who historically have been deprived/depressed.

However there are institutions that allow M.Sc. i.e. Master of Science Maths/Physics students to also pursue M.Tech.(CS). An example is a university in the state of Himachal Pradesh, http://www.mmusolan.org/courses.php:
“The candidates should have passed with minimum 50% marks (45% in the case of reserved category) in aggregate in B.Tech/B.E. in Computer Engg./Computer Sc. & Engg./ Computer Technology/Information Technology/ Electronics Engg/Electrical Engg. or M.Sc. in Computer Science/ Electronics/IT/ Software Engg./ Maths/ Physics/Statistics or MCA or its equivalent examination from any recognized University.”

Even the elite IITs allow M.Sc.(Maths) students, who qualify and get a good rank in the GATE (CS) exam, to do an M.Tech.(CSE) as I know of such a case less than a decade ago.

M.Tech.(CS) Project

I could not locate suitable links on the net describing the academic regulations for the M.Tech.(CS) project. From experience I can say that it is typically referred to as the final year project (2 semesters, namely third and fourth semesters of the 2 year M.Tech. program). The third semester may have some additional courses to be done but the fourth and final semester is exclusively for the project work. At one institution, 10 credits are associated with the project and I believe that to be quite typical.

The evaluation components of the project, from my experience, are a large component of external examiner evaluated thesis, smaller component of project viva and perhaps some other small components evaluated by project supervisor/guide. I believe this evaluation pattern to be a typical one for AICTE regulated educational institutions.

M.Tech.(CS) Project Types

From my experience, broadly there are two types of projects, software engineering project oriented where the student gets exposure to problem requirements, design, development and test for a significantly sized and complex system software type problem in CS areas like web services security, image processing, parallel processing, ontology (for primary & secondary school education - roughly equivalent to K-12 in USA, I guess), object oriented analysis and design etc. I refer to this type as software engineering type. Such type of projects typically have no research component. They may involve studying associated computer science literature but will typically not involve publishing a research paper on the project.

Then there is a research oriented type of project where the student first studies computer science research literature for a research problem suggested by his/her supervisor and then works on the research problem. Typically there is some software engineering work as implementation of approach adopted to solve the research problem. During the course of the project or after the end of the project, the student in conjunction with his/her supervisor may also publish a research paper or two from the project work - typically conference paper(s).

[Jargon Confusion: Software engineering is a research area as well. In this post I am not addressing that area of research at all. In Indian CS & IT academia, the term software engineering research seems to be used quite rarely as compared to computer science research. In this post I am differentiating between software engineering research and software engineering software development work by referring to the latter as 'software engineering project' or simply 'software engineering' without the word research.]

Should M.Tech.(CS) Project be CS Research Oriented Or Software Engineering Project Oriented?

As the M.Tech.(CS) program usually allows students with Bachelor's degree in non-CS areas to enter the program, many students entering the M.Tech.(CS) program may not have done a software engineering project as part of their Bachelor's degree. Further they may have basic programming skills like using C++/Java for some kind of work but not be really proficient in using them for complex system software kind of tasks. E.g. Using C++/Java/equivalent programming language along with, say, an Image processing class library may be something which may severely test an M.Tech. student who is mediocre in programming.

In my humble opinion (IMHO), before advising an M.Tech. student to take up a particular type of project, the supervisor should assess the student's capability in software engineering project work involving requirements study, design, development and test of a fair size problem of system software type complexity (as against simple Database forms oriented applications). If the student is weak in software engineering project work then the student should be advised to do a software engineering type project and there is nothing wrong about it as, I am given to understand, AICTE regulations permit such projects with zero research component to be considered as M.Tech. projects. [I tried to locate/download AICTE (model) regulations for M.Tech. projects but could not find it.]

If, on the other hand, the student is found capable/experienced enough in software engineering project work of system software type by the supervisor, then the supervisor can, or perhaps should, advise the student to take up a more challenging computer science (or software engineering) research oriented project (which will also typically have some software engineering project component). This allows good and excellent students to get the best out of their M.Tech. project - research angle exposure as well as some software engineering project work.

But "actively encouraging" most or all M.Tech. students to take up research oriented project work in AICTE type of universities (unlike the elite IITs) can be ill-advised if the regulations allow for zero research software engineering projects. IMHO, it is an unethical practice to "actively encourage" M.Tech. students to do research projects (or scare them by veiled or open threats of poor marks for zero research component software engineering type projects) when the academic regulations allow for zero research component software engineering projects.

If a department wants to have a Masters program which is only research oriented there are AICTE approved programs like M.S. by Research which a department can take up. In such cases there will be no confusion from regulations point of view at all.

Another point is about rural university/college issues. Typically such universities/colleges have significant number of rural students. Many of these rural students who enroll into an M.Tech.(CS) program may not really be strong enough technically to take up research work in their M.Tech.(CS) program. Expecting all such students to do research as part of the M.Tech. project work and then getting disappointed by the work they do seems to be a grave error of advise/judgement.

Yet another point is the need for senior academics to have research assistants for doing research work and publishing research papers. In places where senior academics do not have enough PhD scholars (PhD students/grad-students) or M.S. by research students associated with them, the senior academics may view the M.Tech.(CS) students as their research assistants! That, IMHO, is not an ethical practice.

IMHO, academics must always bear in mind that their first and foremost duty towards M.Tech. students is the teaching part of their mission; the research part is secondary and optional. Most M.Tech.(CS) students look for a software engineering job (systems software type usually) in the industry after passing out. If they have not had good exposure to a software engineering project of system software type they may either struggle to find a suitable job or worse, get a job and then struggle to perform adequately in the job. IMHO, M.Tech.(CS) post-graduates passing out through the educational system without decent software engineering project exposure of system software type is a failure of the teaching mission of Indian CS academia.


This second part of this post has an edited version of the email conversation with the correspondent (who is currently based in USA) which includes the views of the senior Indian CS academic. It is rather long and so please feel free to skip reading it or just skim through it.

Ravi wrote:
In the blog post, “Nature and Science 2011 Articles on Lack of Importance Given to Teaching Nowadays”, http://eklavyasai.blogspot.in/2013/04/nature-and-science-2011-articles-on.html, I plan to add the comment below:

In some extreme cases, research glory/publication count obsessed administrators may even create a culture where Masters students are "actively encouraged" to work on research projects thereby contributing to research output of the department/institution but many times at the expense of their Masters learning goals. The poor students may not even realize where they are losing out while they are doing their Masters. When they start looking for non-research jobs like applied science and technology jobs after their education then they will realize the shortcomings in their education. [Industry and academic research jobs, I am given to understand, are more suited for PhDs. A non-PhD person joining a research job may find a PhD glass ceiling staring him/her in the face very quickly in their career.]

A PhD scholar/grad-student (graduate doing a PhD) working on research is a completely different matter, of course. Same is the case with an M.S. by research student. That is what s/he is expected to do. I am talking about Masters students like M.Sc. and M.Tech. students. Encouraging the typical M.Tech. student to publish a conference paper while s/he is doing their project work is, IMHO, a very dangerous and unethical practice. While the student is doing an M.Tech. s/he should focus on learning the technologies involved in his/her project and aim at excelling in that area. Once the M.Tech. project period is over, including submission of project thesis (for evaluation), and the viva/exams, s/he exploring the possibility of publishing a conference (or even journal) paper based on their project, seems quite fair and ethical to me.

Some exceptional M.Tech. students may be brilliant who not only can publish some research papers (conference papers typically) but also learn the technology skills part very well. But most M.Tech. students will lose out on picking up technology skills well if they are "encouraged" by their supervisors/guides to publish a research paper while they are in the middle of their M.Tech. project work. [A classic case may be a project supervisor "encouraging" an M.Tech.(CS) student to try out a research approach using MATLAB instead of C++/Java as the student is not able to write such C++/Java programs quickly. The student may pick up MATLAB skills but may end up keeping his/her C++/Java/(other well known programming language) programming skills applied to a particular domain like Ontology (Automatic Classification/Automatic Annotation) or Image Processing, by using associated class libraries, which are the vital skills an M.Tech.(CS) student is expected to be proficient in, at a lower level than the desired level!]

Such practices will help the supervisor/guide (as they will be co-authors of the paper) and it will help the department/institution, as it will increase the publication count but, IMHO, it is an unethical practice, as most M.Tech. students will lose out on the learning technology part. I think such a practice, if followed, will be a clear case of academic research craze corrupting academic teaching ideals.

[Ravi: As the comment above is now part of this post, there is no need to add it as a comment to the other post referenced above.]



Correspondent (Corr) wrote: I've been mulling over what I should say for some time now. First, I am not sure I am an appropriately unbiased person in this matter: I’ve been fortunate to have a reasonable balance between the CS and programming; notice that I am distinguishing the two. I have seen far too many botched projects because of a lack of understanding of basic CS concepts. All I contend is that you need both: programming skills and sound CS fundamentals.

IMO, what happens when people don’t understand basic CS is what I’d like to call the copy-paste programmer. He may be good enough to write assignment programs, but not really industry projects. He will use the miserably slow linear scan-and-search when he could be using something much better. And so on.
Ravi wrote: For system software projects, I agree with your view. Fundamental theory of CS (as against advanced stuff which I consider as optional for some type of system software projects) + programming fluency makes the ideal combo. Only programming fluency without fundamental theory of CS makes for a weak systems programmer typically. [As a mostly self-taught and mostly systems software programmer in the mid 80s to around the end of the millennium, I had to struggle with my theory gaps by doing some intensive self-learning of some CS topics. I was not the ideal systems programmer due to lack of a proper, formal CS theory background but the supply of knowledgeable CS theory + programming guys (as against formally CS qualified but without good knowledge of CS + programming) was so low that people like me with intense self-learning periods, had to do such jobs and did it to quite some satisfaction of the customers usually. In today's context I really do not know whether significant number of CS graduates and post-graduates in India are knowledgeable enough of fundamental CS theory. Of course, there will be more numbers of good CS graduates now than my times (1984 to 2002). However the demand for system software chaps must have gone up exponentially in recent times in India. So don't know whether the good CS graduate numbers have grown in a matching exponential way or better.]
Corr:  Coming back to the problem addressed in your comments: departments at universities usually pitch themselves as Research-oriented or Teaching-oriented; or at least what the majority of the faculty think they do is pretty clear. I think there is sufficient onus on the student to do his homework and find out what he is up for before admission. Once a student joins a research-oriented department, I am not sure who is to blame. What can the supervisor do if the student is not good enough to program his project in C/C++/Java? Should he allow the student to lag and potentially fail his degree? Matlab like environments are an easy compromise. Moreover, IMO, the masters projects are hardly a place to learn programming; rather, that is where students prove that they can effectively apply what they learnt: both in terms of programming and CS basics. I see the Masters projects as a place to fine tune and polish existing skills more than a place to 'learn' programming.

Again, please remember that I have a natural bias in this regard.
Ravi: And I may have a bias too. So let us have a free exchange of our views knowing that either or both of us may be rather wrong. The exchange of views can help in possibly both our views becoming more nuanced.
About M.Tech. degree: Initially when I was in industry I thought M.Tech.(CS) chaps would be really great guys technically as I sort-of presumed that it will be a B.Tech.(CS) + M.Tech.(CS) combo. When I checked around somewhat recently I was told that even at IIT usually a B.Tech.(CS) guy does not do an M.Tech.(CS)! It is guys from other streams (Other engineering streams, Maths, Physics etc.) who want to change their stream and get into the CS stream that do M.Tech.(CS).
So the typical M.Tech.(CS) student may not have done a strong software engineering (req. + design + programming + test) project prior to his/her M.Tech.
Certainly an M.Tech.(CS) project cannot be a programming assignment. It has to have a project flavour as against a programming assignment flavour. And what is a project flavour; the problem should be of significant size, should involve req. analysis, design, development and test - all of this work should be appropriate for a 10 credit course (in my experience at an educational institution that is what it was IFIRC; at other places it may be slightly different). The project report should present all the work done so that it convinces the examiner that 10 credit equivalent amount of work has been done and that it is of sufficient technical complexity (system software type) suitable for an M.Tech. degree.
Based on interactions with experienced Indian CS academics I was told that this is how an M.Tech. project is viewed elsewhere in Indian academia too.
About departments pitching themselves as research-oriented or teaching-oriented I think the crux is the academic regulations for a particular degree program. If the regulations for it (e.g. M.Tech.(CS)) provide a zero research software engineering type of project to be taken up as an M.Tech. project then the department must allow a student that option.
You wrote, "the masters projects are hardly a place to learn programming; rather, that is where students prove that they can effectively apply what they learnt: both in terms of programming and CS basics."
I agree in general. I repeat that the Masters project cannot be a programming assignment. It has to be a full project. And a full project will typically involve CS basics and programming.
You wrote, "What can the supervisor do if the student is not good enough to program his project in C/C++/Java? Should he allow the student to lag and potentially fail his degree? Matlab like environments are an easy compromise."
I think this is a vital part of our discussion for me. I think your view is what some CS academics in India take. Maybe you and they are right. But I think the CS academics are terribly wrong from a teaching point of view. Maybe I am wrong. Anyway, here's my view:
An M.Tech.(CS) student who cannot do a technical project in C++/Java/equivalent programming language but slips in something in MATLAB, should not be given a CS degree, IMHO. He/she does not have the capability to provide system software engineering solutions. He/she should be forced to learn system software engineering skills (req. + design + programming + test) before he/she is awarded the M.Tech.(CS) degree.
Matlab environments are an easy compromise only from research results point of view. But in reality it is the poor M.Tech.(CS) student who suffers by not getting a chance to learn good systems programming as part of his/her project work (in the case where the student is weak in such programming skills).
I feel people who are weak in software engineering should not be allowed to take up research oriented M.Tech.(CS) projects. If a supervisor finds that the student is not able to implement some paper in C++/Java quickly, the supervisor should change the M.Tech.(CS) project of the student to a software engineering type instead of research type in the interest of the student and in the interest of academic honesty & integrity. And such a project is in full conformance with AICTE regulations - that is the vital thing in AICTE regulated institutions/departments in India.
An M.S. by research in India gets evaluated differently I am told. That seems understandable to me. So a guy doing his project work in MATLAB for an M.S.(CS) by research may be fine. But not an M.Tech.(CS).


Corr: 1. Let me clarify further on the copy-paste programmer. Some persons earn a name for being capable of beating code until it "works" but they may not have a good CS background. They use copy-pasting from other sources/web-sites without having an understanding of how that code works. When instructed to implement concept X/algorithm Y (which is a common way that requirements are given out) they cannot understand basic things about the algorithm and cannot implement it. So they try to use copy-paste techniques without understanding the copy-pasted code. While such cases may be chronic cases, I say this just to point out that it is not necessarily true of only/mostly system projects needing basic understanding of CS fundamentals.
Ravi: In my generation/group of self-taught systems software programming guys I think a programmer who could not explain code that he copy-pasted from somewhere else into his own 'production'/released program would be considered an unreliable and bad programmer.
Corr: 2. Regarding the M. Tech degree: I don't think it is true in general that mostly non-CS people do M.Tech. It is definitely the case in some institutions, but not in general. Specifically, IIT-ians don’t bother with M. Tech mostly because their B. Tech degrees are good enough to get extremely high-paying jobs. Trend was, when I graduated, most IIT-ians end up doing MBAs from IIMs. That is the trend with IITs. If you look at the admission process to the IIT-Bombay M. Tech (CS) degree, you need to clear the GATE-CS exam (http://www.cse.iitb.ac.in/page33, see the ‘CSE Department Admission Requirements and Procedures’ section).
Ravi: IIT + IIM (IIMs, http://en.wikipedia.org/wiki/Indian_Institutes_of_Management, are the elite management education institutions of India) was the prized combo even in mid 1980s when I started my career. Most top software consultancy companies then including Datamatics, http://www.datamatics.com/, where I was employed (considered then, I believe, to be 3rd/4th top software consultancy company in India after TCS, TBL - Tata Burroughs Ltd, and sometimes after PCS - Patni consultants ... - Infosys was not born yet – Mr. Narayana Murthy was working with PCS then I believe) recruited some of such "stars". And some such stars were pretty good, I must say. I was very impressed with one such person with whom I had a professional and personal friendly relationship for many years. He became a director in a medium sized international software consultancy company.
Had a discussion with a senior Indian academic today on matters related to this mail exchange. His view was that B.Tech.(CS) or B.E.(CS) rarely do M.Tech./M.E.(CS) from same college/university. But many who do B.Tech.(CS) or B.E.(CS) from mediocre (and poor, I guess) universities/colleges pursue M.Tech./M.E.(CS) from better universities/colleges. That seems to make sense to me.
Regarding IIT M.Tech.(CS) needing GATE in CS clearance. Yes, I guess. But even GATE would not be able to test software engineering project kind of exposure of the student well. So you can certainly have many cases of people entering an IIT M.Tech.(CS) program with zero software engineering project experience.
In this connection I would like to share some personal experience. Around 1990 or 1991, as a software manager of a startup firm in SEEPZ, Mumbai, http://en.wikipedia.org/wiki/SEEPZ, I recruited an M.Tech.(CS) IIT Bombay passed out student. I recall that during the interview I conducted with him, he was talking about a radar technology project. I did not understand the physics/electronics part but I did try to dig in the software design & development part of the project. He could not give me a good account. I thought maybe I did not do the interview well - after all he is an M.Tech.(CS) from IIT Mumbai. And he did explain some programming stuff quite OK (separate from project). I gave the okay for recruitment. Later I saw he was a little slow on software development initially. But he picked up the stuff quickly - so there was no eventual problem.
I also learned that he had done B.E./B.Tech.(Production Engg.) and then moved into M.Tech.(CS). That seems to explain his poor software engineering project experience - zero software engineering project experience in B.E. and research type project in M.Tech.(CS) at IIT Bombay.
Corr: M. Tech, by virtue of its name is a technology program. But it is not uncommon that the projects be research oriented. For example, CSE IIT-B clarifies this upfront: http://www.cse.iitb.ac.in/page31 (Postgraduate Programme (M. Tech.) section, first para, last line). The way I see it, this is a symbiotic approach. Universities mostly thrive on research. While teaching helps the students, research helps the university. And, mostly no sane teacher/lecturer/professor asks for research from Undergrads. But the moment one is enrolled in a masters program, I suppose it mostly requires some research. How else would you show a value-add for the masters program?
Ravi: Hmm. My non-academic, man-on-the-street view is that a Masters degree can involve teaching of advanced topics not taught in a Bachelors degree. That is the value addition. The research component may be optional depending on the kind of degree offered. But then I do not know whether this view matches the academic view. And that view is more important here.
Corr: I think if programming is to be taught, it should be at the undergraduate level.
Ravi: I don't disagree. And I think that is the case in most academic setups in India too. However they may not teach stuff like Advanced Unix programming, Socket programming, in a B.E.(Civil) program or an M.Sc.(Maths/Physics) program.
Corr:  Even in the US universities, programming capability is assumed for the Masters program. If you cannot program, the professor can atmost direct you to enroll in an undergraduate programming class and quit the current masters class. Masters programming oriented classes mostly focus on things like language support for certain design patterns, C++11 features etc. And mostly such classes are offered as single credit, seminar electives.

I think a (possibly better) approach would be to have more strict filtering during the admissions, rather than failing the student for lack of programming skills. To me, failing a student for lack of programming skills is simply an acknowledgement of the failure of the admission process whose goal was to filter and choose sufficiently prepared students.
Ravi: Well, there are various types of programming skills. The entrant to the M.Tech. program may have basic programming skills like using C++/Java for some kind of work. But using C++/Java along with an Image processing class library may be something which may test a mediocre in programming student severely. And that's where him using the MATLAB route for quicker research results, IMHO, is a terrible option from an M.Tech.(CS) technology learning perspective.
About admission process being weak. I think the practical reality in India is that many M.Tech.(CS) students enter the program with poor software engineering project work skills. You have to deal with such students.
Corr: 3. Finally, there is the humanitarian aspect to education. Barring a few statistical exceptions, many supervisors sometimes want to overlook the students’ shortcomings and hopefully help or push them through the program. They need to find such methods to help them out.

4. I definitely agree with this though: I feel people who are weak in software engineering should not be allowed to take up research oriented M.Tech(CS) projects. However, I think supervisors must allow leeway for the student to experiment with their own capabilities. But yes, the supervisor should be proactive to point out and change the direction of the project if needed.
Ravi: That (point 4 above) is the crux of the whole discussion for me. I took the opinion of the senior academic I mentioned earlier, on it. We agreed that the supervisor should assess the student's capability in software engineering project work. If the student is weak then the student should be advised to do a software engineering type project and there is nothing wrong about it as, according to the senior academic, AICTE regulations permit such projects with zero research component to be considered as M.Tech. projects. [BTW I tried to locate/download AICTE regulations for M.Tech. projects but did not get it.]

If, on the other hand, the student is found capable enough in the software engineering project work side by the supervisor, then the supervisor can, or perhaps should, advise the student to take up a more challenging research oriented project (which will also typically have some software engineering component). BTW I entirely agree with this view. This allows good and excellent students to get the best out of their M.Tech. project - research angle exposure as well as some software engineering project work.

But "actively encouraging" all M.Tech. students to take up research oriented project work in AICTE type of universities (unlike the elite IITs) can be ill-advised if the regulations allow for zero research software engineering projects. In my strong view, I consider it to be an academic ---- to brainwash M.Tech. students to do research projects (or scare them by veiled threats of poor marks for software engineering type projects) when the academic regulations allow for zero research software engineering projects.

The senior academic pointed out very well that if a department wants to have a Masters program which is only research oriented there are AICTE approved programs like M.S. by Research which a department can take up. So no confusion from regulations point of view at all. BTW today I came across even an M.Tech. (Research) program.

Another point that came up in our discussions is about rural university/college issues. Typically such universities/colleges have significant number of rural students. Many of these rural students who enroll into an M.Tech.(CS) program may not really be strong enough technically to take up research work in their M.Tech.(CS) program. Expecting all such students to do research as part of the M.Tech. project work and then getting disappointed by the work they do seems to be a grave error of advise/judgement.

Yet another point is the need for senior academics to have research assistants for doing research work and publishing research papers. In places where senior academics do not have enough PhD scholars or M.S. by research students associated with them, the senior academics may view M.Tech.(CS) students as their research assistants! That, IMHO, is not an ethical practice.

Corr: A few clarifications:

1. copy-paste programmers are no good -- even today. It is just a matter of who identifies/interviews and makes that call decides who get in and who get out. In my 3 years, I only okayed one candidate. My managers learnt to ensure only high performer positions were interviewed by me too. Otherwise, they realized that it will simply be a time waste to try to sneak a candidate through me -- for good or for worse.

2. There is no excuse for admitting students to M.Tech.(CS) with poor programming skills -- even though you point out that this routinely happens. Perhaps if this problem is solved, the problem of having to deal with non-performing students during project phase will go away. But I guess the problem at hand is to treat the symptom rather than the root cause. Put another way, it is trading one problem for another, IMO.
Ravi: I believe the standard of software engineering project work in B.E./B.Tech.(CS/IT) streams in many AICTE colleges is not great at all. And it is some of these persons who will come into an M.Tech. Guys coming from other streams which do not have a software engineering project at all are also strong possibilities. They want to do an M.Tech.(CS) due to the job potential mainly, I guess, and so some colleges somewhere will provide the programs to meet the demand. As I see it, it is a simple supply and demand issue.
And so, in the foreseeable future in India, lots of M.Tech.(CS) entrants may have not so strong programming skills. The point is that even a free education system needs students - even if they don't meet a minimal standard. For commercial education systems, which are the vast majority of CS education systems in India, without sufficient students they may not be able to pay faculty salary!
These, IMHO, are the inescapable realities of non-elite CS/IT education in India.
Corr: 3. Yes, there is no excuse for forcibly thrusting research on people who can't cut it -- there is no arguing about that, IMO.



Corr later passed me two links referenced below.

The article, "How Different Is A B.S. In Computer Science From An M.S. When It Comes To Recruiting?", was very interesting to me. Some quotes/points that I found to be of particular interest:

*) "In my experience, an MS degree has been one of the strongest indicators of poor technical interview performance." [Ravi: That, from a US recruiter, is a very strong criticism of the MS post-graduates tech. skill levels in the US.]

*) The article mentions that some MS in CS students have an undergrad degree in some other field and so never do an algorithms or data structures class. It further states that graduate-level (i.e. MS) algorithms class would have easier grading when there are many students in it who have not done CS in their undergrad studies. [Ravi: I am quite shocked really to read about the point about the grading curve being easier as lots of guys in the class have never done any programming! But I think that must be the reality even in the USA. Of course, there would be some exceptions but when taken as a whole across the US, like in India, there must be many students doing MS with poor level/knowledge of programming/software engineering skills acquired in their non-CS graduate degree.]

*) It mentions that one of the attractions of an MS from a top CS school is the paper degree legitimacy value. It proproses another option of doing Udacity and Coursera classes, building some cool software and working with a recruiter. [Ravi: Wow! That's some clear and off-beat advise. I don't know the US job market and the quality of Udacity/Coursera classes well enough to comment with certainty. On the face of it, the advise seems to be quite an interesting option.]

"MSCS", http://blog.regehr.org/archives/953, was very interesting. Looks like MS coursework-only may be like Indian M.Tech. Don't know if the MS will have project work though. The research MS seems to be similar to MS by Research in Indian academia.

*) This article references the previously mentioned article, "How Different Is A B.S. ..." and draws attention to the article stating that MS in CS has become a cash-cow. [Ravi: I think the cash-cow point may be really hitting the nail on the head.]

*) "The best MS students and the best undergrads are extremely strong. However, the median-quality MS student is weaker than the median-quality undergrad. A lot of this is caused by the MS students who don’t have a CS background: they simply are not ready for a serious upper-division CS class." [Ravi: This time the comment is from a US Associate Professor and not a recruiter. So clearly, in USA, there seem to be significant number of MS in CS students without CS background who struggle to cope with Masters level course work.]

*) "At many institutions, the responsibility for not getting in over one’s head is placed largely on the students. While this is in some ways admirable, it does lead to some amount of unnecessary suffering." [Ravi: I read this as the poor student not getting a clear idea of what s/he is getting into by going in for MS without having a BS in CS background. And then s/he is left on her/his own to cope up with the Masters level classes! Unfair deal for the student, IMHO.]

*) [Ravi: This article seems to be biased towards MS by research CS. The advice the author offers a student who intends to pursue an MS is research oriented. The author did not clarify that the student wanted to pursue MS by research - perhaps the student did not know much about differences between MS by research or coursework-only MS. Ideally the advice should have covered pros & cons of both MS options. IMHO, this is reflective of the strong research bias most CS academics have at the expense of technology skills.]

---

Another correspondent who has taught CS in UK academia shared this comment with readers:

"In the UK they have what is called a 'conversion' MSc and an 'advanced' MSc. The first is for students from other disciplines who want to learn some CS; classes are very often at about the same level as final year degree CS courses. This kind of course is very popular with overseas students and hence with university administrations who can charge them higher fees.

There are fewer advanced MSc courses and they are usually intended as preparation for research."

No comments:

Post a Comment