Last time I talked about how computer science relates to the liberal arts; this post is about the other side, about my thoughts on computer science as technical, almost vocational, field.
The first question is one of balance. The more I think about an ideal computer science curriculum, the more I see a tension between the demands of the liberal arts, of computer science as field, and of the billion-dollar industry that is technology. A liberal arts bent demands a focus on new modes of thinking (eg. map versus territory); a computer science bent demands a focus on algorithmic efficiency (eg. data structures and big-O); and a vocation bent demands a focus on the skills required to work in a software company (eg. version control and agile development). The precise amount of time I should be spending on each is not clear to me yet, although I suspect going with my natural inclination will do a decent job.
More than the software engineering/software developer skills, I’ve been thinking about the difference in technical ability between the graduates of liberal arts colleges (“college” graduates) and the gradates of state universities (“university” graduates). I have talked to a number of my friends about the liberal arts college experiences, and one trend I noticed is that many of them feel like their undergraduate courses were not as rigorous or technical as the courses they took (or saw others take) in grad school.
I see two possibilities. It’s possible that the students’ feelings reflect reality, that college graduates are in fact technically weaker (by whatever metric). The question would then be why this difference exists. Some ideas:
- University students take more computer classes. While it’s possible this is a curricular difference, I suspect that the curricula require the same number of credit hours. Instead, it’s more likely that university students do not feel the need to diversify beyond their computer science classes, while college students do due to cultural influences.
- University computer science classes are more challenging, and use more “technical” languages. There is some truth in both of these components. Since college computer classes are offered less frequently and often include non-majors, the difficulty may be reduced to accommodate all students. I’ve also noticed a trend for college classes to prefer Java, while university classes often use C or C++. The latter two languages require the programmer to do more bookkeeping, so students may come out with a better grasp of the underlying principles.
Alternately, students’ feelings are exactly that, and there is in fact no difference in technical ability between liberal arts graduates and state university graduates.
- An obvious possibility is that these feelings of inadequacy is merely the imposter syndrome, and that in fact all graduate students feel insufficiently prepared. A simple way to test this would be to talk to university graduates.
- There is a sample size effect. Since there are many more university graduates than college graduates, there are also more students of extreme ability, against whom students compare themselves. I know for a fact that there are also university computer science students who have a surprisingly terrible understanding of the subject.
Even if it’s true that graduates of liberal arts colleges are weaker computer scientists than their university counterparts, I refuse to believe that this is a necessary outcome. The first step to addressing this is to understand why this difference (or this illusion of difference) exists, and I intend to keep question in mind as I transition from a public university to a liberal arts college.