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.
Making the physics course easier wouldn’t lead to danger for travelers; it would lead to the students being unable to cope with the course work later on. Nobody’s going to let you design a bridge if you can’t solve the equations.
Generally – colleges have very little interest in having students fail or drop out. Their income from second year students is limited by how many survive their first year, and so on. Back in the day when I studied mechanical engineering, all the students in my class that survived their first year went on to achieve a degree.
You are right – computer science is not necessary for many computer-related jobs at the techician level. If someone has aspirations of becoming a senior programmer, architect, etc. then they had better have some knowledge of computer science. For myself – although I have a background in engineering, my computer science is mostly self-taught. That’s perfectly possible, and for many of my generation, that was the norm. These days, you should start with computer science as at least one of your subjects.
LikeLike
Dominic,
I was stretching the idea a bit, but you do have a good point about not being prepared for future course work. Colleges do not want to have people drop out, they just want them to find something appropriate. I started as a Civil Engineering major and realized that I hated college-level physics. I ended up in CS eventually and have been there ever since.
LikeLike