Tuesday, September 15, 2009

CSE- Truths and Myths

Okay guys, am sorry for the delay. Guess I got really indolent back there. Anyways, now its time to write about something which is closely related to me, my engineering stream, CSE.

For those of you who do not know, CSE stands for Computer Science and Engineering. Till last year, it was one of the most popular engineering streams in India, easily the cynosure of all eyes. Only after the recession, and the fall of IT markets, have people started avoiding it, opting for Core engineering branches(Mechanical, Electrical, etc) instead. However the demand for CSE and IT graduates will never go down, since IT has become ubiquitous in every arena. Still now the trend of most engineering graduates, irrespective of their streams, getting into IT jobs continues. Since the early 90’s, the IT sector in India has seen an astronomical growth, and an inflationary boom. It employs lakhs of people every year. Companies like Infosys, TCS, Wipro, etc have all made tremendous growth and profit. And I don’t even need to mention the number of IT coaching centers which have popped up in recent times, offering anything from classes on C++, to Networking. NIIT is a prominent company which has hugely bolstered the IT sector by training thousands of students and professionals.

But enough talk about the market and companies. I would rather like to focus on CSE in particular, ie its course contents, curriculum and scope. CSE was introduced as an engineering branch in 1980’s in a selected colleges, though it made itself known only in the late 90’s when many colleges started this branch as a part of an engineering course. Apart from CSE, we have BCA, MCA, etc, which focus more on Computers and Programming, rather than the scientific/engineering aspect of computers. Very soon CSE became the first choice for most high school students who opted for engineering. I too, wanted to get into CSE. But unfortunately I did not get it. However, I did not give up hope and ultimately managed to change my stream in second year, and got into the branch of my dreams. So, did CSE live up to my expectations? Not really. Let me try to explain this in detail.

First of all, one must remember that the ultimate aim of almost every student is to get a lucrative job. So understanding the industry environment prior hand is quite essential. We should know what the company wants and expects from a Computer Science Engineer. Ie apart from basic knowledge on both Hardware and Software, a CSE student should have apt programming skills, he/she should know how a Computer operates and what is the function of each peripheral. He should also keep himself updated with the rapid technological progress, in areas such as Networking, Microprocessors, Algorithms, Data Structures, etc. This is to say in short. But unfortunately, the designers of the CSE curriculum fail to notice these facts, rather they remain forcefully oblivious of it. They design the syllabus in such a way, that not only does it fail to arouse a student’s curiosity in the subject, but it almost totally neglects the programming aspect, and rather features tons of redundant theoretical stuff which the student will never require. As a result, yet again the student has only bookish knowledge, and finds himself at a total loss when he enters an industry. I have even seen students going to the extent of memorizing programs and algorithms just to get good marks in their exams. They are least interested in sharpening their acumen, or developing a program cum project on their own. This nonchalant nature of the students, leads to a sort of travesty.

Add to that the immense dearth of good faculty across the nation. Most people do not prefer to work as a lecturer in a college, mainly due to the abysmal salary given. As a result we have teachers, who themselves do not know anything about the subject, teaching whatever fallacious things that comes into their minds. This only encourages the lack of creativity. I carried out a mini survey, and found out that most students do not like their subjects. Just a handful of them are genuinely interested. In fact, many of them took CSE, just because they thought it will get them a good job. Now if the desire itself is not present, there is no way that the student can actually progress in any sphere.

Another negative factor is the poor selection of subjects. I still cannot comprehend why do CSE graduates (at least around where I stay) need to study Circuit Theory or Control System? Or even Analog Communication Electronics. What use will be that to them? Some people blatantly answer for knowledge. Okay, if I required knowledge, I would have taken Electrical or ECE, right? If I have taken CSE, I should get to study more computer related subjects, isn’t it? Unfortunately, the syllabus setters do not agree. Their logic is that, since we are about to become engineers, we should have basic concept of all engineering streams, including but not limited to Electrical, Mechanical, Electronics, etc, since they are all related to computers in some way. Okay, lets see, a Computer requires electricity to function. So EE is essential. It generates lots of heat, which causes thermodynamic changes. So Mech is required as well. Apart from the various chips and instruments installed in the motherboard. So Instrumentation becomes a pre-requisite. And of course, we have thousands of capacitors, resistors, microprocessors and what not. So electronics is of prime importance. That means, barring computers, we should try to learn everything else, as much as possible. Nice idea, but doesn’t that alter the meaning of the word, ‘Specialization’ ? Aren’t we supposed to focus and narrow down our study area over selective topics, rather than learning nugatory subjects which we will never require? I wish people would pay more attention to this, rather than cramming things which they will forget the next sem.

Now to the final and most important part- Programming. CSE students are expected to have decent programming skills. At least they should be capable of working efficiently in a Java/Dot net/others Environment used in industries. But it is seen, that apart from the top colleges, programming is given a back seat in CSE. Whereas useless theoretical stuff is given prime importance. Oh come on, for God’s sake. We are not going to recite such stuff in offices are we? We have to perform programming by writing codes. Which is exactly the thing omitted in colleges. In fact, we do not even have separate papers/subjects on JAVA or C++. But they just constitute a miniscule amount of the syllabus. And shockingly languages such as Visual Basic, HTML, XML, etc, are not even included in the CSE syllabus. Not to mention about the DOT NET package, which most teachers and students consider to be a nefarious alien not deserving enough to be included in the syllabus, lest the students develop interest in programming even by mistake. And yet, we are expected to have adequate programming skills. Now unless a student takes tuitions/classes outside(which are quite expensive), there is little chance that he can develop good programming skills. Moreover, most teachers are more concerned about finishing the syllabus in whatever way possible, than trying to make the student genuinely interested in the subject. They limit themselves to whatever is given in the syllabus and focus only on theory. Hardly, if ever they relate the subject to the real world and its practical aspects. No wonder so many students have only bookish and no practical knowledge about the subject.

Anyways, I am going to stop here, as I want to shorten my articles from now on. I am proud to be in CSE, but at the same time I wish the course contents were changed, and the subjects taught in such a way, that would make a student fall in love with it. Okay the last line was an exaggeration.

Take care folks. And thanks for reading.


marry said...

Blogs are so informative where we get lots of information on any topic. Nice job keep it up!!

Resource Center

manu bajpai said...

good way to explain your branch. interesting!!!

Satwinder Singh said...

@marry: Thanks. Keep reading for some out-of-the-box articles on diverse topics. :)

@manu: Thanks. Thats just my personal feeling however.

Kevin Rodrigues said...

What you have said is known by all the computer science and engineering students who also know that nothing will change.

I disagree with you that programming languages should be taught in engineering. Instead of that subjects like Network Programming, Database programming, etc should automatically make use of the latest technologies and programming languages.

Also in other disciplines of engineering, when you are out of college and work, you are supposed to work as an apprentice, watching the masters and learning. Then becoming a master yourself. But in the computer industry, just knowing the basics of a programming language qualifies you to work on important projects. No wonder all the projects are messed up and we all know how reading bad code feels like.


Abhid-d said...

Actually, I disagree with you on this. If one wants to learn programming languages ONLY (which are really whats needed at our teeming IT firms like the Infys and Wipros), then theres no need to do Computer Science Engineering. One can do a B.Sc in CS or even join a neighborhood NIIT joint (I know a few commerce graduates who are at senior positions at IT companies).

What sets CS ENGINEERING apart from these courses is that a person knows the essence of a computer, and how to further it to the next generation. A CS engineer's place is actually at Google and Microsoft, and not at Wipro or Infy. The latter hire truckloads of engineers (any branch) to work at their centres. The former hire only the top CSE (and ONLY CSE) grads.


Post a Comment