I often hear the sentiment that universities are doing a poor job at educating the new round of computer scientists and engineers. This obviously is not the universal case as there are a number of outstanding programs with outstanding professors, students, and support networks. But, in my anecdotal experience there are many poor programs and I believe that the core issue comes from a disconnect between professors culture, history, and focus and the students expectations. In fact, I feel I must also say that it was rare that we’d even consider a job candidate that only had a college degree, we would often prefer the non-college, self-driven candidate for entry level positions.
The usual things I hear from students, graduates, and those in corporate environments (IT and hi tech software companies) is the following:
- The technology taught in school is old, they still use Pascal or C++ instead of .Net or Java.
- There is too much of a focus on the desktop and not enough focus on the web.
- There is limited or no curriculum on security, systems administration, network management, or some other focused discipline that usually centers around a job title/work position.
- The teachers are old dinosaurs and out of the loop on new technologies.
- Many computer science students aren’t driven by a love for technology and got into the program because they know there’s money in the industry.
In my opinion the problem also includes some less-often cited reasons:
- A majority of students who are interested in technology don’t really understand and appreciate technology to a deep level.
- Students have a misplaced confidence in their knowledge and abilities and therefore look down on the professors teaching “old” technology.
- Students want skills to get them in the workforce and there is a pressure on professors to teach job applicable skills.
- The pure concepts of computer science are bastardized or forgotten in curriculum because of the pressure of corporate interests.
I think most techies blame the schools, hence the bias towards blaming schools and professors in the first list. Personally, I put some responsibility back on the students, hence the bias in my list against the students. In my view many of these items start with the students (and corporate money invested in the schools) and create a tension between the matriculating population and academia. I think there is a pull between what students want to learn and what academia wants to teach. I think this tension becomes unhealthy in that the compromise means nobody gets what they want.
Let me elaborate on each of the points.
1. A majority of students who are interested in technology don’t really understand and appreciate technology to a deep level.
I think this comes down to a single fact… technology is easy to access and use relative to even just ten years ago. Okay, let me explain… it’s a great thing that technology is easier to access and use than ever before. In fact, I think we have a long ways to go still to make technology truly accessible to the rest of the world, the barrier to entry needs to be brought down. Unfortunately, with the lowering of this barrier to entry we have a new age of techies that haven’t had to go through the hard knocks and knowledge acquisition to pursue their computing interest. Yet, they are considered skilled and built up by themselves, their parents, friends, and teachers.
It used to be hard to get into computers, there were fewer of them, they were expensive, they were hard to setup, the were hard to use. We went from physical jumpers to plug and play, assembler to Visual Basic, text interface to graphical interface, BBSing to the Web, local resources to global resources, and several thousand dollar devices to several hundred dollar devices. Functionality was limited and it was a search to find a limited set of applications. To explore and have fun used to be a search down… to the lower levels of the system. Now it’s a search up… to easy to download applications and web sites. Technology enthusiasts now require a lower net understanding of the system to do things on a computer.
This isn’t necessarily right or wrong in of itself, but in the context of becoming a computer engineer or scientist it creates a lesser level of knowledge about computer science; about memory addresses and data structures, about co-processors and hardware, about interrupts and DMA, about machine language and high level language. Today there is more value placed by society at large and the techie sub-culture on what you can make a computer do, not what you understand about it’s inner workings. This leads to a diminished overall appreciation for the computer as an entity unto itself and the science that goes behind its creation and operation in the new-techie populous. Those that have a love and appreciation are becoming a greater minority and stand in opposition to the gray hairs in academia.
2. Students have a misplaced confidence in their knowledge and abilities and therefore look down on the professors teaching “old” technology.
The new-techie can do a lot of things with a computer with little knowledge, and the barrier to entry of computers is still high enough that he or she can look knowledgeable to the lay person. This knowledge sets the modern techie apart from everyone else and instills a sense of pride and understanding. Unfortunately this pride can become close to hubris. This has been the case for the history of modern computing. Hackers and crackers, hobbyists and academics have had a superior attitude against society at large forever.
In the past there was a greater basis for this superiority complex, by being able to get into the community you have already proven a level of competence. Today, the general techie community is very large, very easy to access, and very welcoming of new entrants.
So there seems to be a disconnect between the techie culture of old, of which is most of academia, and the techie culture of new. I’ve heard from many young people that feel the higher education computer science and engineering programs are poor because they don’t address today’s technologies, they choose to use Pascal or C++ over .Net and Java, systems development over web development. Or they focus on fundamental concepts and theory instead of application.
I agree, that if a concept can be taught in a more applicable market technology than an old one then academia needs to make the switch. But, I think a switch into ever higher levels of programming language can be a mistake too. The abstraction given be higher order languages necessarily mean that students are exposed to less, they’re taken farther from the computer. While I think this is an area of healthy compromise, I think professors resist change because they want focus on the theory (we’ll ignore the lazy factor for sake of argument), while students complain because they don’t see the application of the lower levels of computing theory.
3. Students want skills to get them in the workforce and there is a pressure on professors to teach job applicable skills.
4. The pure concepts of computer science are bastardized or forgotten in curriculum because of the pressure of corporate interests.
Items 3 and 4 I’ll address together as they go hand in hand. Students want good paying careers and corporations want an educated workforce. What a synergy that academia at large isn’t built to address or participate in. Academia is about knowledge for for furthering and fostering general understanding, science, art, and culture. The process of fulfilling corporate or work goals can overlap the process of pursuing knowledge in academia and this is where things get blurry.
Capitalism. Corporations and students are both aligned to give and get jobs to exchange service for money, duh. Institutions of certification, corporate training, technical schools, and even university continuing education have been specifically developed to evaluate and rank the work force. But the university degree is king and any industry specific awards are never quite as good. So the programs and curriculum to gain a university degree in computer science and engineering are changing, they are leaning towards “real-world”, work related interests. Now, I think in the last few years we’ve started to see the prestige of the bachelors degree in computer science or engineering is being degraded as a result.
There is a level of prestige given to a university degree, especially post-graduate degrees. This prestige is being compromised in computer science as more and more scientific knowledge is traded for more and more application in the realm of work and corporate interests. Students influence the computer science programs as do corporations, through a lack of enrollment and large financial donations, respectively. I think the university system stands against it where it can, gives in many places, and the result is a program of education that never fully meets the wants or needs of either side. Both sides are merely placated.
This socially ingrained capitalism is so strong that it’s affected computer science and engineering programs in universities, pressure is coming from outward and from within.
Conclusion
So what do we do? I’m not sure. My personal view is that universities stand up, make academics and knowledge king and do not give to the pressures of student uninvolvement, corporate interests, or any other factor that pulls a university education into an uncomplimentary realm. I know that’s not going to happen, universities are necessarily capitalistic. They compete with each other, they need a student body to make money and continue, and they do what they can to balance these needs with knowledge, education, and learning.
My only idea is that there are multiple tracks to computer science and engineering, and maybe that means that there are domain specific minors offered to give a flavor of application to the broader science. Possibly start all students with a computer science appreciation class to explain what computer science is, what it isn’t, why the science is important, and alternative ways to meet goals not necessarily in the realm of academia.
I don’t know the answers, I’d love to hear feedback. I am curious if others have the same view on the higher education system and if I’m flawed anywhere. Expand my understanding, I like to learn!