Computer Science and Engineering has been a lucrative stream to many aspiring engineering students in India. But once they join an engineering institution to study it, the course structure, regularities and trivialities sway them away from the actual goal. To begin with, most of them don’t even master a single programming language in the first year. Till the third year they don’t have any idea of the practical application areas of Computer Science and Engineering. When it comes to the grand final project, most of them are mugging up textbooks and preparing for GATE or examinations (which is good but not at the expense of the learning from the final project) or routine interview procedure. Many of them end up copying or even buying the final project. When they leave college they are just balloons of technology waiting to be burst aloud. I have seen the same even during my MS course from one of the première institutes of India: this course has mandatory papers each for database, data mining and data warehousing for some godforsaken reason; as if software systems are just about writing database applications. The irony – Data Structures and Algorithms are rushed through in a single paper!
A major restructuring of both the course and the outlook towards engineering education is essential to produce computer engineers en masse who actually know what the subject stands for:
- Basics first. Pay for faculties who have a good hold of the subjects they teach, enough to demonstrate practical applications of some of their significant aspects. Examples and explanations matter.
- Keep the core subjects like Data Structures, Algorithms, Compiler Design, Computer Architecture compulsory. Make subjects rather loosely coupled with Computer Science and Engineering optional. In my experience I have seen many suckers who used to score huge numbers in those but couldn’t handle thread priorities even in the final year. Subjects like Mechanical Engineering and Workshop, Operations Research, Control Systems and Electrical Circuits should be optional. If a student is interested he will opt for it. Add more optional subjects like AI or Embedded Systems or Genetic Programming and even Game Design.
- A programming language of choice (and still having relevance) should be compulsory in the first semester and make sure they can write a small daemon with it which can service asynchronous requests.
- Give practical assignments and spread those throughout the year. Explain the assignments first. And oh yes, practical assignments do not mean develop a full game in a week’s time. It means RESEARCH and develop strong algorithms for any of the tricky aspects of it and implement it. When you teach object-oriented, ask them to break it into classes. Search Google and take a look at assignment papers from première institutes of the world.
- Throughout these course years, interest them enough to keep themselves continuously busy with real and useful projects, not just semester results, like contributing in collaborative real projects going on. And award some credit at the end of the final year for that. As a start, once they are done with a programming language, give them the URL to SourceForge. Many of them would handle it themselves from there.
- Each student is different. When you take money from each of them, it is your responsibility to find out their areas of interest. Yes, for each one of them. Put groups of students under each faculty from the first year to find it out. And order your faculty not to do politics with students to start a project under them around the third year. If a student is interested in creating web pages, help him nurture and cultivate his interest. He may one day come up with something like the Wikipedia. Show them the possibilities and encourage them to do what they love to do.
- Stop encouraging them to join external coaching centres to learn .NET and JAVA. For true knowledge which they need, those are rotten useless tools. Read the third point above. They pay you to learn how to write those, not merely use.
I accept the reality: opportunities for good and real applications of Computer Engineering are very less in India and the huge number of students passing out each year makes it worse. When they graduate most students dream of doing amazing things but unfortunately they are not skilled enough and they are not strengthened enough to hold on to those dreams for long. Most of them adapt with maintaining decade old stagnant applications for years and lose interest in even trying something new or enhancing their existing skills (and I am not thinking paid ‘professional’ courses and interview preparations for switching) because the institutions fail to instill that interest in them at the right time. In most cases, their thirst for technology dies out in 2 years tops and this huge energy vanishes in the trivialities of technological oblivion.