Had a busy day today. Meeting with a prospective student who wanted to do an Honours degree without any undergraduate background in Computer Science whatsoever. I can understand the impulse, and perhaps it is possible in some fields, but I think that in most cases the knowledge gap is simply too large.
Then I had lunch with Brink and Willem and we talked about a lot of topics, but also touched on the issue above: what do we teach our undergraduates? Earlier this year we were slightly shocked that our new Honours students seemed a little deficient when it came to some basic computer-scientific knowledge. But perhaps this is standard across the board. I would like to think that I knew more than just programming when I finished my third year, but (1) I did end up in academia, (2) it is easy to misremember, and (3) I have always thought that knowledge — or at least insight — needs a year or two to “mature” before it rises to conscious level.
The bottom line is that there is absolutely nothing that I want our students to learn by rote. In other words, I would not like them to memorize anything. On the other hand, knowledge is simply organized memory, so it is important that they remember=know some things, such as different sorting algorithms. But ideally they should come to be familiar with them because they read or think about them, handle them like chemistry students handle chemicals, geology students rocks, medical students cadavers.
More than anything else, I would like our students to learn skills and a certain attitude our approach to problems. It is a very nebulous concept, but I believe that there is a computer science-ish way of approaching problems. I see this most clearly when I talk to mathematicians about common research topics. I really admire their way of thinking and I envy them to some extent, but I also detect that their thinking is different from mine and from what I believe to be other computer scientists’.
Almost all teachers at university would agree with the above, I think: specifics is not important, we want students to learn to think.
Is it better for a student to recode sorting each time they need it, or to use the library without ever understading how sorting works? I prefer the first alternative. Eventually the clever students will figure out that it is more productive to use the library, but it is doubtful that a library user will ever spontaneously develop an understanding of heap sort (or whatever technique you prefer) from calling the library routine over and over. And eventually, excluding those who go to work in some menial coding factory job, all our students will encounter a situation that requires problem solving abilities.
FWIW, I did a Phd, no less, in computer science, with practically no background, only maths.
You are the exception that proves the rule.
You are joking of course, but “execption that proves the rule” is a misunderstood phrase. It should be used in the way that if we have a rule \forall x: P(x) => Q(x), then the “exeption that proves the rule” would be some x such that Q(x) does not hold and for which P(x) appears to hold, but upon closer inspection, P(x) doesn’t hold either.
Perhaps your answer could be fixed by weakening the statement. You need background, but not necessarilty CS, perhaps maths will do just as well. I suspect this to be true. Most maths majors that do CS courses, do better than software engineering majors. This is not surprising either.
Technically, I agree with you. But I don’t feel very pedantic today: it is not misunderstood by most people. They use it they way they see fit and this is what determines its meaning. Remember Yeats’ admonition: love the crooked thing.
As far as the prerequisite for CS is concerned, I don’t know no nothin’ about *most* math majors, but I would guess that it depends on the background, the CS, and the individual. Lack exact information, our department does not allow students without a three-year CS degree (Bsc) to enter for our fourth-year degree (Hons), but if they manage to obtain one somehow and can persuade a staff member to agree to supervise them, they can enter for a MSc or even PhD.