Friday, September 30, 2011

Is a PhD in CS/IT Necessarily a Good Teacher?

Post Last Updated On 28th October 2011
AICTE/UGC norms clearly imply that. And they are laying down guidelines for the entire country's higher education!!

In my non-researcher, non-PhD humble but quite logical thinker opinion there are broadly four possibilities:
a) PhD qualified + Good teacher of CS/IT graduate/post-graduate students
b) PhD qualified + Poor teacher of CS/IT graduate/post-graduate students
c) Not PhD qualified + Good teacher of CS/IT graduate/post-graduate students
d) Not PhD qualified + Poor teacher of CS/IT graduate/post-graduate students

AICTE/UGC CS/IT policy makers may say: How can that be? How can a PhD in CS/IT not be good at teaching CS/IT? That is impossible.
Further they might say, how can a non PhD be a good CS/IT teacher? That is not possible.

Well, I would not be surprised by such views from AICTE/UGC CS/IT policy makers. After all, they are the important members of the academic PhD club and have to protect the status & exclusivity of the academic PhD club.

But I think such views are FALSE. Doesn't matter if tons of CS/IT Professors think so. The TRUTH is not swayed by PhD arrogance. [Now, I am not saying all CS/IT PhDs are arrogant, but certainly some academic CS/IT PhD administrators are.]

Any CS/IT professional who has many years of experience under his belt knows the depth vs. breadth issue in software. Some guys may be focused on a narrow area and become in-depth in that area - like somebody who has worked for a decade only on compilers. Such a guy may be a veritable authority on compilers. But he may not know much about socket programming or n-tier architecture for E-commerce web applications - and he may be the first to state that it is not his area of expertise and that he does not know anything about it.

On the other hand some guys, especially software consultancy professionals, jump from technical area to area as they move from one customer project to another. So they may have an astounding breadth of expertise acquired over many years, say, in networking software products (gateways, LAN OS, browsers), E-commerce, mobile apps, Insurance software, Banking software, secure international financial transactions software, Object Oriented Analysis & Design, UML modeling, Design Patterns etc. This breadth enables them to take up software work in a variety of areas. However they may not be considered to be a veritable authority in any one area as they cannot match the expertise of a similar professional who has worked for the same number of years but in just one area.

The software industry needs both depth and breadth guys. In general, one could say that product development software companies need more depth expertise whereas software consultancy companies need breadth expertise. Of course, this is a sweeping generalization which will not hold true in all cases. But it may be valid for a significant number of professionals in both type of software companies.

The PhD in CS/IT is a very in-depth guy. Not only is he in-depth but is far more narrowly in-depth than a software industry in-depth guy typically. Further the PhD guy has an out-and-out research paper publication focus and not a software development focus. For the PhD researcher guy it is Publish or Perish.

But when the PhD has to teach CS/IT graduate/post-graduate students he has to be more like a software industry breadth guy. He may have to teach 3 to 4 courses ranging from Introductory Algorithms, Database Management, Compiler Construction to Object Oriented Analysis & Design! He could offer one course related to his research area - though there also he has to teach introductory or slightly advanced stuff and not his advanced research work. But he cannot limit his teaching to only his area of expertise - he has to teach other courses too.

So for the other courses, typically, he simply reads from the book, understands it and teaches it. Yes, many times he himself may have studied the course as a student. But then, as a student, you don't need to know the subject that well even to get good grades. When you teach you have to answer questions from students! There is no escape in the classroom/lab.! So he tries to master the book, or at least that part of it which he has to teach. It is book knowledge that is imparted to the students. What else can he do? He cannot do another PhD in the area which he is supposed to teach! Note that for the course he teaches where he has done research he will be very knowledgeable typically - I am talking about other courses here.

IMHO, such book knowledge teaching is nowhere close to the teaching of an industry professional who has practical expertise in that area. I repeat, nowhere close. And, just in case, readers are not aware, there is a lot of in-house teaching that happens in the software industry where knowledgeable seniors impart knowledge to juniors and peers in an informal or semi-formal teaching environment.

And then there is the communication skills issue. Research typically needs solitude and an individualistic approach. The researcher communicates on his research work with experts in his field. He can choose to, and many times, has to be very elitist in his communication - people who are not of the field may not understand him at all - which is OK as they are not from the field. In fact, a UK academician said part-jokingly but part-seriously that if others can easily understand your research work/talk then they think your research work is not that great! So only a few should understand, for your research work to be considered noteworthy :-).

However teaching requires very good communication skills and a non-elitist approach. What you teach should be understood by at least, say, 80 % of your class. You have to come down to the level of the students. Otherwise you may be a great researcher and very knowledgeable but a poor teacher. You may be a good research-guide as then you can be elitist but you may be a disaster as a teacher if you have an elitist approach in the classroom. By elitist here I mean that you speak in a way that only knowledgeable people of your field can understand you.

So while some PhDs may be good CS/IT graduate/post-graduate students' teachers, some may be poor teachers too.

And then you have non-PhD guys who are technologists and so know many tech. areas in reasonable depth but not in-depth. However the syllabus of most graduate/post-graduate CS/IT programs are not so in-depth. I mean, most of the text books followed are referred to by many industry guys as well. For example, Andrew Tanenbaum is famous for computer networks over decades in industry as well as academia. So many non-research but strong technologists from industry could easily teach many CS/IT courses in academia. Further they have practical on-the-job experience and so their teaching will be of a far higher-grade than a book-knowledge teacher. And most industry jobs require extensive team-work - so one's oral and written communication skills become quite strong. Further many teach short-term courses in industry.

So a non PhD can also be a good CS/IT graduate/post-graduate students' teacher. But being a non PhD he cannot contribute easily to any research efforts - further he could be a technologist who is utterly disinterested in research. And all non PhD software industry professionals are NOT good teachers - but some certainly are.

So, if AICTE/UGC policy makers think that insisting on PhD and research publications output is the way to improve quality of teaching CS/IT in academia I think they are making a TERRIBLE mistake. And, the tragedy is that these policies may help the academicians PhD club to prosper but make life miserable for the poor defenceless students & parents of students who think that a CS/IT degree is a passport to an industry job.

But then they might say, who will do CS/IT research? How will the country progress in CS/IT research? Well, besides industry research, we can have academic research CS/IT deparments - with degrees like M.S. by research. It becomes clear to students and parents that joining such degrees puts students on a research track. They will not expect to be trained to do software industry design & development jobs.

And these research CS/IT departments can be as elitist, as PhD clubbish as they want to be. Everybody will understand as they are research-centric. Such departments can be measured by the quality and quantity of research publications output (which seems to be the AICTE/UGC norm).

But most students and parents are not interested in research! They just want students to be trained to get a CS/IT job. So let there be academic teaching CS/IT departments which are teaching-centric and NOT research-centric. They should focus on providing a balance between theory and practical skills to students. When the student graduates he should be skilled enough to land a job on her/his own, without the help of campus interviews. That should be the acid test of whether an academic CS/IT teaching department is recognised by the Government (via AICTE/UGC) and NOT how many quality (impact factor based) research publications the department produced and how many PhDs the department produced.

Students at such teaching CS/IT departments may be given some limited exposure to research so that those who are intellectually capable and inclined (and do not have to immediately earn money from a job to get settled/help family or repay their student educational loans) can move into research in a research CS/IT department.

In India there is a huge amount of trust that innocent students and parents put on teaching institutions. Teaching institutions should be faithful to this trust by clearly informing students and parents right at the outset whether they are research-centric OR teaching-centric. Educational institutions should not attract students on the pretext of giving them job oriented skill sets but actually making them "theory & research oriented Generals" who struggle to get a "software development soldier" job (and don't get any "research General" job either).

CS/IT plays a vital part in the Indian economy now. It probably is the only area where India is recognised globally to be ahead of the relentlessly growing economic might of China. As of now Indian CS/IT professionals produced by AICTE/UGC goverened academia are mainly 'theory & research generals' and some rare 'software development soldiers'. I do not know how Chinese CS/IT academia is. But given the Chinese penchant for being very practical and hands-on they perhaps produce CS/IT professionals with the right balance of 'theory & software development' skills besides a separate breed of PhD researchers. While US CS/IT academia certainly seems to have some similar problems (See What Should We Teach New Software Developers? Why? by Bjarne Stroustrup), it seems to give far more importance to code than Indian CS/IT academia. In the economic competition for software development business market share, it does not need a PhD to figure out that India will be left behind unless some corrective measures are introduced by AICTE/UGC CS/IT policy makers.

I am of the firm opinion that these AICTE/UGC CS/IT policies should not be left only to the academicians PhD club. Software industry experts must play a vital role in CS/IT academic policy making. After all, these issues are not of 'mere academic interest', the future of a key part of the Indian economy and the future of huge number of Indian youth are at stake.

Tuesday, September 27, 2011

Pursuing CS/IT Research Individually - Ph.D. Possibility?

Extracts, edited appropriately for general viewing, from a mail exchange I had with friends on my advise/views on pursuing CS/IT research individually & industry-research-job possibilities are given below.

I have to preface the extracts by clarifying that I have never been a Ph.D. scholar - just observed and interacted with some Ph.D. scholars over 8 to 9 years. I also need to state that I personally am utterly disinterested in pursuing a Ph.D. or doing academic CS/IT research.

But that does not mean that I do not respect researchers! I certainly respect their endeavour to push the boundaries of knowledge in their chosen fields. Their life their choice. However CS/IT research does not appeal to me. What appeals to me is applying established technology to provide working software solutions that help society - a technologist's view perhaps as against a researcher's view. My life my choice. Both technologists and researchers are needed in society.

---- Start Extract of mail Eklavya Sai sent to a friend ---

I think a smart guy like you can definitely get a research job. During my days IFIRC some places like ---snip--- used to offer research jobs along with a chance to pursue Ph.D.

I don't know whether you have a feel of the CS 'research' picture. Thought I can share my exposure to it even if you know about such things already.

A few years ago while I was at ---snip---, I was forced to keep aside my scriptural study/research during the holidays and review the remarks we got for an IEEE conference paper on Web Services Security for which a student I guided and me were the main authors. The paper was accepted in the conference provided we make the appropriate modifications. I did not have a choice as the student was not in a position to go through the remarks and the papers the remarks referred to.

Grudgingly I read those papers :-) A couple of them IFIRC turned out to be from ---Major IT consultancy company--- R&D!!! One of them was from a Ph.D. scholar in ---Major IT consultancy company--- R&D. That was very good exposure to me about possibilities of Ph.D. in applied research areas like Web Services Security and how research in such areas are encouraged by even a 'software consultancy services' company like ---Major IT consultancy company---. I mean, it was clear to me that pushing the envelope in a relatively new area like Web Services security was a not-so-difficult path to publishing conference and journal papers. And that, if I wanted to, I could, without too much intellectual challenge difficulty, pursue a Ph.D. in such "Applied Research" areas.

Though I am not familiar with the Industrial R&D picture in CS research in the country, I am quite sure you may not only get an industry research job but also be able to do a Ph.D. while at it. The issue may be that you need to choose an area that is relevant for industry. Pure research into, say, Design & Analysis of Algorithms may not find takers in India.

Another point I wanted to share just in case you are not aware is how a Ph.D. thesis is evaluated. --- snip --- for CS area seems to be one well-recognised international journal publication or a couple or more not-so-well-recognised international journal publications. The thinking seems to be that if the guy could publish in a reputed journal then he has been vetted well enough by those guys and deserves the Ph.D.

Of course there are the rules and regulations and the Ph.D. defense, but I get the impression that if you go through the experience of one reputed journal publication you can handle the rest of the stuff.

So if you want to explore research I suggest you get some feel of reputed journals in your interest areas (maybe mobile-ipad computing/usability). If you like it then you can start your 'research work' in your spare time even before you get a research job/register for a Ph.D.

Interestingly AICTE/UGC have norms of certain number of journal paper publications, with an appropriate impact factor, in a particular area being considered equivalent to a Ph.D. Anybody can send a paper to a journal for publication. They, of course, can reject it. So you are free to publish in journals even outside a Ph.D. program and if you publish a few papers you may even be considered Ph.D. equivalent!!

--- End Extract ---

--- Extract (edited) from mail exchange with another friend on the above ---

Friend wrote:
The advice sounded fair. However, few 'non-functional' parameters to complement your advice.

1. Doing a PhD in India is not really a job, unlike in many other countries - a prospective student may want to remember this since he may have an incomplete picture based on his friends doing PhDs elsewhere.

2. My personal experience with Industrial PhDs in India: very few, very far apart; highly elitist. Scope for publishing in journals and conferences is all the more difficult due to IP considerations. Can consider job opportunities in Industrial PhD to be under .01% (probably a baseless statistic, but stated only to make a point).

Eklavya Sai responded: Thanks for mentioning the VITAL IP point. I forgot to mention it in my mail. Of course, the IP angle and the profit-making angle will present problems for industrial researchers to publish all their research work freely in a public journal. I mean, no company will want their research work to be used by its competition to improve their (competition's) products and use those improved products to cream the company that did the research!!

3. PhD in many Indian institutes entails menial jobs for the supervising professor (feedback from a friend doing his PhD in --- leading Indian science research university ---, under an established professor). And the time to graduation is very very long: supposedly, over 5 years - which is a lot more than in the US, where one would graduate with 99% probability in 5 years time.
4. It means having a very very very good rapport with the professor, during the entire time. Granting the PhD is usually entirely at the behest of the professor, and little outside of his word matters - feedback from friends in India doing PhDs at --- leading Indian science research university ---.

Eklavya Sai responded:
Noted the very very very! The absolute & totalitarian control that the Ph.D. supervisor has over his research-scholar-students is really scary!!! I mean, if a naive research scholar ends up doing his Ph.D. work under a manipulative Ph.D. supervisor - that's it - his/her life will be misery, man - completion of Ph.D. will then be like release from bondage!!!

But I must also say that, as a disinterested observer, overall I have seen excellent relationships between Ph.D. supervisors and their research-scholar-students. It is almost like a father-son relationship at times.

5. Yes - depending on the topic of research, India may or may not be an ideal place for research.
6. It means a ton of possibly frustrating days/months with very uncertain days - one does not know when one can get a publishable result - can be a mental drain. And, the meager pay can add to the mental weight.

Eklavya Sai responded:
Oh yes, man - I understand. And for a guy who was making tons of money in industry before he switched to do academic Ph.D. research the mental-drain-meager-pay-pinch can be acutely painful!

7. Many times, one needs the weight (name) of a well known professor to even get your work to be taken seriously - so working by yourself and attempting to publish papers could be a challenge. Also, most conferences have prohibitively high fees, creating yet another (possibly artificial) barrier to entry for an unaffiliated and un-funded individual - this is more the norm, not a hard fact.
Eklavya Sai responded:
Ah! That may be the killer for unaffiliated and un-funded individual research. I mean the bar for an unknown individual trying to publish a paper on his/her own must be very high. The content would have to be really brilliant and eye-catching for it to get the publication nod.

--- End extract ---

Friend final response:
You said that you've seen the relationship between the supervisor and student to be near father-son at times. True, but in India, it is just 'at times' I am told!

Saturday, September 24, 2011

CS & IT Academia: How to Teach Programming?

Note: This post is a continuation of post-comment: CS & IT Academia: Serious Systemic Problems?-ChittarComment

Thank you so much for your valuable comments, Chittar.

I am out of touch with industry picture nowadays but even when I was in the industry around a decade back there were Application Software (IT) jobs where a mix of domain knowledge of application and simpler programming skills were needed. Pointers, recursion, linked list manipulation etc. in languages like C & C++ were not needed for these kind of jobs. And Application Software (IT) was the biggest part of programming work in India.

I guess nowadays it must be similar with web/mobile programming (ASP.Net, Java, PHP etc. with databases like Oracle, SQL Server, mySQL) and Component Based Development using tools like Joomla, Drupal etc. being an important chunk of the application software business market.

But I think we also have significant amount of System Software (CS) jobs - even more than we had a decade back. And for these jobs far more solid programming knowledge is needed like pointers, recursion, linked list manipulation etc. in languages like C & C++. Of course other areas of knowledge like OOAD, databases etc. may also be vital depending on the work area.

I agree with you when you say, "I feel it is perfectly possible to maintain a balance between both theory and practice - after all - what one practices is better if it is based on solid theory." In the ideal case, both system and application software programmers should have a solid theoretical base - though this theoretical base would be different for system software and application software programmers.

While I was teaching in academia I was focusing on teaching programming courses only (Lab. courses) [my lack of appropriate academic qualifications did not permit me to teach theory courses and I was very happy with that as I enjoy teaching practical programming courses and am relieved that I did not have to teach theory courses :-)].

As you know, I learnt programming on the job. I started programming by learning and programming in COBOL in 1984. My first and most important system software programming language teacher, a year and a half or so later, was K&R 'The C programming language'. I read and re-read and re-read ... it over a period of years in parallel to me doing industry system software programming in C. I did read other books on algorithms, operating systems, computer architecture, object oriented analysis & design, databases etc. some of which, I found when I moved to Academia after 18+ years of industry experience, were still being used as textbooks for Computer Science theory courses.

But I have to thank the K&R C book for being the one that broke me into "solid systems programming" along with the superb programming style that it illustrated. By solid systems programming I do not mean writing production-quality OS kernels or a compiler or a TCP/IP protocol stack - availability of such work is pretty limited to few companies and an elite few work on it  - I refer to possibly simpler but still systems programming stuff like writing production-quality SMTP gateways or process control simulators.

I have a statement to make [I don't think it is a confession but some CS puritans may feel that it should be one :-)]. I still don't know about Turing machines! I mean, I can learn about it if I want. But I have never felt the need to do so for my system software programming work. And, I think I was a decent programmer. With the huge amount of stuff that I had to learn to stay abreast in the ever-changing software field I generally followed a "need to know" basis about what I needed to study to get my job done decently. That policy gave me spare time to do other things in life as well.

Perhaps, even today, there are many software guys like me. They may be as good a programmer or even a better one as compared to a CS graduate who may be steeped in theory but lacks practical knowledge depth. The software companies choose whoever they feel are good enough to do the job and that's what matters, isn't it? If they choose wrongly they pay with poorer software solutions and may get creamed by the competition.

Okay, having mentioned my background, let me get on to what I think are the challenges for Academic CS & IT departments (in India) in terms of teaching programming. Design is also important but let me focus on programming - let's look at this MASSIVE challenge one step at a time :-).

Now I am not considering the elite technical institutions like IITs. They get the cream and so they can teach algorithms & data structures and allow the students to choose their own programming language and not teach programming languages. The students are very smart and so can, in all probability, pick up a lot of stuff on their own.

AICTE/UGC have the HUGE responsibility for setting guidelines/norms for vast number of mostly non-elite engg. & science universities & colleges in the country. I think it must be a very, very difficult task to come up with norms for a wide variety in terms of quality of students and teachers. Most CS departments of engg. & science universities in the country simply cannot take the elite techie universities like IIT approach and expect students to pick up computer languages on their own. I think it is very sensible for most CS depts in most universities in the country to teach a programming language course at the beginning of the curriculum.

'C' programming is taught by many CS departments as the first programming course at under graduate level. Many of the students are quite raw. I mean they have to be taught what is a memory location, a variable, program statement etc. They also need time to get familiar with using an OS like Linux (assuming C is taught on that). BTW many colleges still use TURBO 'C' to teach 'C' programming! [If you don't believe me, see the initial posts in this forum: http://cboard.cprogramming.com/c-programming/139989-su-do-ku-solver-generator.html]

'C' is taught for 2 semesters. BUT typically a student may have to do many courses per semester - don't know the exact figure but could be five minimum. [I have taught programming courses primarily at M.Sc. & M.Tech. level and so am not exposed to UG - B.E./B.Tech./B.C.A./B.Sc. - curriculum so much.] 'C' programming will be a 'lab' course and other courses will typically be theory courses. Typically there are theory courses like Introductory Algorithms & Data Structures course taught at the same semester/year that 'C' programming is taught. These courses complement the 'C' programming course. However please note that students write 'paper exams' to pass the Introductory Algorithms & Data Structures course as it is a 'theory' course.


While I think the importance of this first programming course is recognised quite well by CS academia, the problem is that it is just one of so many courses. So time available for the course is not much even though it is a 2 semester course typically (e.g. 'C' & 'Advanced C'). And usually students are given liberal marks in 'Lab' courses and so some tend to take it easy. But they have to be scared about theory courses as they have to write many paper examinations on it. Can't really blame the students - in the student mindset, passing examinations are the key goals to be achieved - that earns parental approval - how much they really learn about 'C' programming does not matter so much, and, in fact, is even quite irrelevant as they get a decent grade in 'C' programming anyway, in terms of the overall academic evaluation system and, therefore, parental approval. You may be shocked but that's the way the CS/IT academic system in most engg. & science universities in the country works.

Topics like Pointers and recursion are certainly covered but I think most students do not do enough assignments on them. So their knowledge is quite sketchy and unsure about such topics.

Students think that such 'C' knowledge is enough and tend to concentrate on theory subjects (as tough exams have to be cleared there). Teachers may like to teach more but where is the time? Sometimes teachers themselves may not be really strong on complex topics like pointers & recursion. Anyway 'C' programming etc. is taught by junior teachers as CS professors have to focus on teaching theory subjects and research publications output and can't be bothered by trivial subjects like programming!

So students move through the system to the next year with assumptions being made that enough time has been spent on teaching them 'C' as well as introductory algorithms & data structures. Now they have to be taught other things in programming like an object oriented language, say, C++. The C++ teacher has to focus on features of C++ that are not available in 'C' and cannot spend much time on problem-solving or algorithm implementation aspects of programming - there is not enough time and that is supposed to have already been done in the 'C' programming 2 semester course and other theory courses like the introductory algorithms & data structures course, and so it is not the C++ teacher's job to focus on them!

Eventually the students may do a multi-threaded programming course and learn stuff like pthread prog. library and mutexes and condition variables. But they may still not be able to do K&R C programming problems involving intricate aspects of 'C' like pointers and recursion! That explains what you mentioned in your response. That is the unfortunate reality.

Is there any solution? I feel that lack of importance to Design & Code in CS & IT academia is the root problem. If Design & Code skills in CS & IT academicians is rewarded appropriately then we may have academicians themselves changing the system so that students learn programming better. The change has to come from within - UGC/AICTE policy makers have to facilitate that change happening by altering the REWARD/RECOGNITION system for CS/IT academicians. If the mindset changes then many possibilities can came into play - for example:

a) University CS teachers mastering 'C' and problem solving with 'C' language.

b) Senior university CS teachers teaching 'C' programming

c) If academia has shortage of teachers skilled in 'C' programming then AICTE/UGC norms being changed for CS/IT to allow non-research-oriented industry experts to become university teachers.

d) Time allotted for 'C' programming doubling so that students have ample time for learning and solving many complex programming assignments/problems. The additional time could be made available by dropping two theory courses.

e) Evaluation of 'C' programming courses becoming strict. Students may stop thinking that just 'traveling through' the course is enough to get a decent grade! If they are not upto the mark they could even be failed.

With these measures I think chances of students becoming quite proficient in 'C' programming and problem solving with it is quite high. Instead of 'C', the first programming language could be some other one but the issues raised & solution proposed would roughly be the same. I do not have any exposure to IT academia but perhaps they may prefer Java or maybe even HTML/PHP/JavaScript as the first programming language/language-set to teach.

Once the first programming language and problem solving with that language has been reasonably mastered then the student is truly ready for Advanced Algorithms (Design & Analysis of Algorithms), Operating Systems, Parallel Programming etc. theory courses. He can understand concepts of such courses more easily and he can read & write code to check out the concepts. Whereas if he does not have the programming language grasp, he understands the concepts of these kind of theory subjects at a much more superficial level and fails to translate the superficial knowledge of these concepts into understanding code or writing code - which is a terrible, terrible failure of the CS academic system. I am quite sure the IT academic system will have similar failures.

Now I must clarify that I am not against theory courses neither am I against research. I think theory is very important. But there has to be a balance between theory and practise - currently the CS/IT academic system is skewed heavily towards theory - this has to be corrected.

You wrote, "Defect-free programming by Design rather than by testing - and also do solid research in parallel, commercialise it and patent it. This for me is the proof of the pudding of balance. "

Very well put. But that is your view in your position in industry. Academia may have a different view.

IMHO, research is vital for society. Academic researchers and Industry researchers make tremendous contributions to society. But an academician's research interests or research goals should not come in the way of his duty as a teacher. Naive students should not be coaxed to do research as part of their CS/IT Bachelor's or Master's projects just because it will help the image of the academic institution that they are studying in. The students should be given complete freedom to choose to pursue a technology implementer/software engineering interest or a research interest. And some students may want to have both.

So, out of free choice, CS/IT Bachelor and Master degree students should get into two main groups categorised by their objective, namely:
a) "Defect-free programming by Design rather than by testing" with no research interest
b) "Defect-free programming by Design rather than by testing" as well as research interest

And for both groups. theory subjects (theoretical) knowledge is VITAL.

Some may say "Original Research" only with no or limited design/programming should be a third group. I feel that may be acceptable for a Ph.D. (or M.Phil. perhaps - I don't know much about M.Phil.). But, to me, a Master's CS/IT student doing "original research with limited design/programming" in academia would result in the student's exposure to "Defect-free programming by design rather than by testing" to be pretty low, which is highly undesirable.

I also feel that excellence in design & programming may be extremely helpful in CS/IT research. Just like vocabulary proficiency helps in fluent expression of ideas in a human language, research ideas in CS/IT can be fluently expressed into software with results to show, if the researcher is proficient in design & programming. But then that is my non-Ph.D, non-researcher view of the matter. A researcher may choose to dismiss my view as I do not belong to his Ph.D./researcher club :-).

Friday, September 23, 2011

CS & IT: Pure vs. Applied Research

Last minor update on 26th Feb. 2020

Note: This post is from a mail exchange related to the post: CS & IT Academia: Research vs. Teaching
 
Eklavya Sai had written in a previous mail: academic researchers tend to find new ideas more attractive that extending old ideas... But what is important is the quality of the solution and the satisfaction it gives to the users and not whether the ideas/approaches used are old or new.

Friend wrote: Exactly. So putting together the two points we agree on, which are quoted above, academia should look at how to improve things without bringing into consideration whether the idea is new or old.

Eklavya Sai responded: My second statement which you have quoted above is what I made in the context of the "technologist/software engineering perspective" and not in the context of an academic researcher's perspective. See more of my comments lower down.

Friend wrote: I was trying to say, this is perhaps part of what people mean when they talk of the academia-industry gulf. Academia (again speaking in broad strokes) restrictions itself to idea generation. Whereas we need people assembling them into next-generation systems, and in fact new ideas may or may not be called for in solving a given problem. The focus should be on the ends (solve the problem) rather than the means (whether coming up with new ideas or assembling existing ideas in different ways).

Eklavya Sai responded: Well, I think your view is somewhat limited to "practical problem solving" research & development. While I am sure you are aware of the Pure Research & Applied Research differences I feel it will help the discussion to put down some salient points about them (as I, a non-researcher using Wikipedia sources of information, see them :-)].

Importance of Pure Research from http://en.wikipedia.org/wiki/Pure_research

Pure research, basic research, or fundamental research  is research  carried out to increase understanding of fundamental principles. Many times the end results have no direct or immediate commercial benefits: pure research can be thought of as arising out of curiosity. However, in the long term it is the basis for many commercial products and applied research. Pure research is mainly carried out by universities.

----

Pure research generates new ideas, principles and theories, which may not be immediately utilized; though are the foundations of modern progress and development in different fields. Today's computers could not exist without the pure research in mathematics conducted over a century ago, for which there was no known practical application at that time. Pure research rarely helps practitioners directly with their everyday concerns. Nevertheless, it stimulates new ways of thinking about deviance that have the potential to revolutionize and dramatically improve how practitioners deal with a problem.

--- end extracts from Pure Research wiki page ----

I am not a mathematician neither do I know the history of mathematics to know the accuracy and reliability of the statement above, "Today's computers could not exist without the pure research in mathematics conducted over a century ago, for which there was no known practical application at that time." But I would not be surprised if it is true and I presume it to be true as it is on Wikipedia unless some authoritative (knowledge-based authority) person disputes it.

For the purposes of this discussion let us presume the statement to be true. So if all of research & engineering was only towards practical solutions to society's problems then you & I would not be enjoying the computer & internet age!!!

Now I am not a researcher either. But I do have an opinion about research and here is my technologist opinion of research, for all its worth :-).

Industrial research may have very limited scope for "pure research" as industry is focused on providing solutions to society's problems, or rather those societal problems whose solutions have profit potential.

Academia probably is the only large community where "pure research" can be done without worrying about any practical problem-solving ends. And, perhaps, the intellectual excitement and allure of a radical new idea is far more thought-provoking and galvanising than extending an old idea. So I think it is quite natural for academia to have a bias towards new ideas.

But then academia also has "applied research". And I think that applied research publications and project achievements are also well recognised in academia. But "applied research" is also the area of industry research and so perhaps there is some kind of competition there. "Applied research" where the profit potential is very limited like Text to Speech for Telugu or Malayalam or Sanskrit is typically ignored by industry. This is where some academic "applied research" is/can be done. I think here academia is quite receptive to extending old ideas to solve the problem.

However, IMHO, no matter how useful the extension of an old idea may be to solve a practical problem, the radical new idea "breakthrough" will always have more intellectual grandeur and appeal to the researcher & thinker and to the academic community, in general. And so, academia will, perhaps, always have a "new idea"/"original & path-breaking work"/"innovative idea" craze :-)! If somebody is not so comfy with it, like you and me, then we don't fit in 'regular' academia as it is today - as simple as that!

Eklavya Sai had written in a previous mail: That, I think, is a really key difference between a technologist's view and an 'academic' researcher's view.

Friend wrote: And it's obvious which camp I belong to :)

Eklavya Sai responded: I guess I belong to the same camp as you :-). I also am respectful of the other camp and their view and their choice.

Thursday, September 22, 2011

CS & IT Academia: Research vs. Teaching

Note: This post is from a mail exchange related to the post+comments: http://eklavyasai.blogspot.com/2011/09/cs-it-academia-serious-systemic.html

Friend  wrote:
I agree that teaching should be an important goal by itself, for academia.

I think you want only those people in teaching positions who actually know something first-hand. But that doesn't have to mean research. It could mean broad industry experience (you are an example here). I think the same bias we talked about earlier applies here, too. People who work in industry are considered to be less than researchers, so why would you want to dilute the department by letting them in? Hence you have the IITs saying that you need to have a PhD to be a prof, and you have to keep doing research. In fact, the IIT-Bombay CS dept promises profs that they have only one class to teach per semester so that they can concentrate on their research.

I (Eklavya Sai) responded:
Well, I just want at least some of the university CS & IT teachers to pursue excellence in design & coding and be rewarded for it even if they do no research.

Research will be the HOLY GRAIL of academicians including CS & IT academicians. But it should not be ONLY Research with NO DESIGN and little or NO coding.

About industry experience guys getting into academia - I think UGC/AICTE rules do allow for it provided the guy has a master's degree in that line (CS or IT). But perhaps at a lesser position than a 'researcher'. Not great, but at least they allow them to be teachers. My case is a real exception :-). B.Sc. (Phy.) [M.Sc. drop-out] teaching in a CS dept. as a regular university teacher?? No way. And I can understand that. The only exception allowed in such cases by AICTE/UGC rules is if the guy is an "eminent" person. So, I guess AICTE/UGC will not mind if some Indian university hires Bill Gates as a Professor, though they may crib if Mark Zuckerberg is hired even as an Assistant Professor - as they may not have heard of him :-).

I can be considered only as a "Visiting Faculty", which is exactly my status now. Suits me perfectly as I just am interested in Free Seva where I share my knowledge with students and am utterly disinterested in a regular 'academic' career.

IIT Profs. focusing on Research is somehow expected by policy makers, I think. I mean they expect IITs to figure in some top list of universities worldwide and I think these lists are driven primarily by research profile of the university. Must be quite a dilemma for an IIT CS Prof. - focus on country's technology problems using existing ideas or improvements on them OR do 'original' research that will be acclaimed internationally?

Friend wrote:
So, when universities say that profs should do or should have done research, I think the goal really is to weed out people who don't have any kind of original contribution or knowledge or experience and who just read aloud from the textbook. I think the goal is good, but it has been reinterpreted to mean research, which is bad. It's perhaps obvious when you think about it that the same bias that drives profs to concentrate on publishing papers also makes sure only those people get in the door to begin with.

Eklavya Sai had written in an earlier response: I have heard academicians being referred to as 'he has published 400 papers', which is supposed to mean that he is a great academic.

Friend wrote in response: That's actually scary.

Eklavya Sai had written in an earlier response: And this career growth measure naturally is a MASSIVE influence on the academic community. I mean, they are also human and would want more money and status.

Friend wrote in response: Agreed. And penalizing people financially for choosing to go into academia rather than industry is bad, if teaching is a primary goal of profs. If they are just publishing papers, fine, I don't really care whether they are paid less or more, but if they are teaching, and if our country has a bad shortage of talent that's holding back economic growth, then you shouldn't penalize people trying to fix this.

Eklavya Sai had written in an earlier response: A further, perhaps, very radical view is that some academic teachers should be given the option to be only teachers and not researchers.

Friend wrote in response: Agreed. I can imagine a university that lets people in with proven industry accomplishments, does not require them to have a PhD, and lets them focus 100% on teaching. Those people already have learnt a lot, and so are in a good position to teach others.

Eklavya Sai responded:
I am not primarily referring to industry guys here. I think a lot of teachers who are students turned teachers without any industry experience may actually enjoy imparting knowledge gained to students as a teacher. Teaching a subject forces you to learn it really well if you want to earn the respect of students, and almost any teacher worth his salt would want that. BUT the pressure to produce research publications directly eats into the time the teacher needs to master knowledge of design & programming. So most CS & IT teachers just manage with bare minimum knowledge of design and programming - anyway as they become senior they move out of Lab. courses and so they can be completely oblivious of design and programming from then on. I think that's the mindset - due to the research publication pressure.

Of course, there may be quite a few exceptions to what I have sketched above. But I think that is the norm for most CS & IT teachers. As Prof. Stroustrup mentions in his article some CS Profs. proudly say that "they don't code" - I guess they feel coding is meant for lower lifeforms :-).

Eklavya Sai had written in an earlier response: Sometimes I feel it is almost like a religious monk's quest for 'purity' - pure intellectual quest of a particular knowledge area untainted by application of that knowledge area to society.

Friend wrote in response: http://www.paulgraham.com/philosophy.html

Eklavya Sai had written in an earlier response: I don't think I agree with your generalization that academia focuses on things that are original but ignores whether it is useful.

Friend wrote in response: I was oversimplifying. I didn't really mean that utility is 100% ignored, just that the goals are skewed. Isn't it true that academia rewards original ideas more than putting together existing ideas in a slightly different way or making subtle tweaks to something that already exists? But what if the best potential for improvement comes from an idea that already exists? You don't want to close your ideas to that and have an a priori assumption that you need a new idea.

After all, the whole point of ideas is that you can use them in umpteen situations. So statistically you're better off seeing if an existing idea can address whatever problem you're looking at, than go hunting for a new idea.

Eklavya Sai responded:
I have had very limited exposure to CS research paper publications. But, at least in the area of Web Services Security, I saw that some research papers did build on extending existing ideas in different ways. I think mature researchers probably value extending old ideas or perhaps even applying existing ideas to new problem areas. But overall my perception is that academic researchers tend to find new ideas more attractive that extending old ideas. Don't know whether industrial researchers look at it the same way.

From a technologist/software engineering perspective, application of well established ideas/approaches to problems demanding solutions is perfectly fine and can be quite challenging depending on the problem. New ideas delivering better solutions are also welcome. But what is important is the quality of the solution and the satisfaction it gives to the users and not whether the ideas/approaches used are old or new. That, I think, is a really key difference between a technologist's view and an 'academic' researcher's view.

Eklavya Sai had written in an earlier response: academic research does have a vital role in society.

Friend wrote in response: Sure, but couldn't it be even more if they get rid of their bias towards new ideas?

Eklavya Sai had written in an earlier response: I mean, if the student is smart enough to learn by himself why should he come to college to learn?

Friend wrote in response: To get a piece of paper called a degree certificate, so that Google will offer him a job :)

Eklavya Sai responded:
I think the Internet knowledge base is going to change all this. I mean a guy can learn so much from the net today itself. As online education portals become more organized and sophisticated I think they may become a powerful teaching alternative. To test whether a guy has learned or not they can have examinations - how the guy learned via regular brick-and-mortar universities or 'cloud campus' may be the choice of the student and/or parent.

Another major factor in favour of online education portals is the huge costs of university education especially abroad. I have heard horror stories of US students going into massive debt just to finish college and then they find they don't earn enough money to pay back the debt - they are into a debt trap BECAUSE OF COLLEGE STUDY. Horrifying stuff!!

Eklavya Sai had written in an earlier response: My experience is that it is quite easy to teach standard stuff to a smart student - the real challenge is to motivate and impart knowledge to the average student.

Friend wrote in response: Interesting. Yes, I don't have a teacher's perspective. Not being a teacher, I don't have to deal with the problem of the average student :)

Tuesday, September 13, 2011

CS & IT Academia: Serious Systemic Problems?


Last Updated On January 28th 2012

The unfortunate reality of the vast number of CS & IT departments of universities & colleges in the country is that the Professors of these departments are strong in theory and research publications but not so strong in practical areas like Software Design and Programming or Coding. Naturally the students graduating out of CS & IT academia also end up having somewhat strong theoretical and research-oriented skills but being weak in Software Design and Programming.
But the biggest employer for CS & IT graduates is the software industry which mainly needs strong software design and programming skills. Yes, there are some industry research jobs too where research orientation would be very useful but such jobs are very few.
Most parents want their children to get a good industry job after they finish their CS & IT education. They get shocked when their children even after graduating/post-graduating with a B.E./B.Tech./BCA/M.Tech./MCA do not land a job. The reality is that campus recruitment is the main mechanism though which ‘freshers’ get jobs. Otherwise it is very tough for a CS & IT stream graduate to get a job!
Why is that? Is there not enough demand for CS & IT skills? Well, the problem is that most of the ‘fresh’ graduates simply do not have the skills to do software programming jobs. The large software companies put the ‘freshers’ through intensive in-house training before they are deployed on ‘live’ projects.
The ‘freshers’ who fail to get recruited at campus, many times, pay through their noses and go through an additional private i.e. not government recognized, “job oriented” training course which gives them “job oriented” skill set. But should not CS & IT academia provide that? That is what parents and students expect. Even common people expect that an M.Tech. in CS/IT or an MCA fresher will be able to straight away do programming tasks.
The reason lies in policies adopted by AICTE/UGC which are the vital academic regulatory agencies of the country. The primary factor for the career growth of any academician lies in his/her research work measured in terms of research publications. The CS & IT academician naturally has to focus on research to enhance his career. If he focuses on programming then he may stagnate. And so, in general, the teachers themselves neglect programming in favour of research. When the teacher himself does not focus on programming how will the students learn programming well? The system instead encourages the students also to do research and discourages too much interest in programming!
So is there any solution? There should be policy changes which will encourage CS & IT academicians to grow in software design and programming. For such changes to come AICTE/UGC MUST have significant industry representation. As of now AICTE/UGC policy makers seem to be research oriented Professors with limited exposure to software industry’s engineering needs.
But will AICTE/UGC be willing to listen to such words? In all probability the research oriented Professors will look down upon such views. So what do we common folk, non Professors, do? Well, we should approach the Ministry of Human Resources & Development (MHRD). We common folk pay taxes and it is OUR TAX MONEY which MHRD gives to AICTE/UGC and which flows down to universities and colleges. MHRD is answerable to the TAX PAYER and is answerable to the parents and students about why most, but not all, CS & IT graduates are weak in practical design and programming skills.
MHRD should insist that AICTE/UGC policy making bodies MUST have significant software industry representation. MHRD should ensure that AICTE/UGC norms for career growth for CS & IT academicians give a growth path where software design & coding expertise is given as much importance as research publications. Perhaps AICTE/UGC rules should be changed to allow non-research-oriented software engineering professionals from industry to become university teachers.
This problem is not peculiar to India alone. U.S. academia too has significant problems. Here is the world-famous Inventor of C++, Prof. Bjarne Stroustrup’s article in the reputed “Communications of the ACM” publication on changes needed in CS education: What Should We Teach New Software Developers? Why?

Prof. Bjarne Stroustrup is a Distinguished Professor & holder of College of Engineering Chair in Computer Science at Texas A&M University. He is an ACM fellow as well as an IEEE fellow. For more details, see: http://en.wikipedia.org/wiki/Bjarne_Stroustrup, http://www2.research.att.com/~bs/.