Traditional CS Education Weeding Out The Unwilling
Every once in a while, the computer science education debate appears anew. Is the curriculum too hard, is it too easy or is it even relevant to today’s business environment. Typically, nothing comes of these debates because the people doing the debating have different goals, and will never come to an agreement. About a month ago, I started to see posts about the debate again.
The first post I saw was related to the weeding out of the unwilling. Basically, colleges tend to make the computer science programs hard enough so that people that find it difficult or are unwilling to learn will eventually drop out of the program. The post is interesting, but I disagree with the conclusion that is reached:
Attempting to weed out entrants is a disservice to the whole of computer science: its teachers, students and practitioners. Weeding out entrants has a noble intent to help students discover that computer science isn’t for them at an early stage, however it is insular and conceited. Many — perhaps most — entrants will do well to jump directly into the deep end of the computer science pool. However room should be allowed for those who want to splash around in the shallow end first.
In a traditional college-level computer science program, the idea is not to teach people how to “splash around in the shallow end”. A traditional program teaches the core theory of how computer science works. You can learn different types of programming models like procedural, functional, object oriented and logic programming. You learn why basic insertion sort sucks and how to build a better sorting algorithm. Without such knowledge, we would never be able to innovate in other areas. Innovation is where the hard work is, so learning how to do interesting things will likely be just as hard.
The “weeding out” is a necessary process for colleges because they need to ensure that the level of education they provide is valuable. This is not to say that there should be an easier way, but the traditional computer science program should not be made easier to compensate. As an example, look at many engineering programs. Typical civil and mechanical engineering programs require one year of college-level Physics. If you can survive, and possibly enjoy, that first year of Physics, then these engineering programs may be a good option. Imagine if we made Physics easier for students. Some fundamental knowledge could be lost and new roads and bridges would not meet the same quality standards as previously built ones. That would obviously be dangerous to travelers.
There are other options we can take instead of trying to simplify existing CS programs. First, there are existing Information Systems programs that lack the formality of the CS program and focus more on the ability to build useful applications. There could be specializations available, which require the student to take some core CS classes but then allow you to take other topic-specific electives. Many of the existing specializations in traditional programs would not make the program easier, like artificial intelligence or systems engineering, but new specializations could be created to facilitate an easier program of study.
Overall, we need to be careful about making things easier for people when it comes to education. Granted changes are always needed in education, as programs need to adapt to changing theories and industries. However, formal computer science programs will always be needed. Having students learn how things work is critical to innovation. This does not mean that people need to go through formal computer science programs in order to be successful. Some people may take a different road and still become excellent programmers. I have known some of these people in my career, but they are not the norm. There are also different needs when you look at some of the applications that are developed. For a typical web application, there are graphic designers, UI or user experience designers, database developers, and server-side developers. Not all of these people need a traditional computer science education, and in some cases a different education can be beneficial.
In the end, you have to like what you are doing. That means enjoying the good and the bad, the easy and the hard.