Define: “Computer Scientist”

I was in a meeting the other day, and something cropped up which was cause for much debate. This was attempting to define exactly what a “Computer Scientist” is. This is of course very relevant to the BSc (hons) Computer Science degree programme.

The question is: What skills should a graduate of this discipline have at his/her disposal? It’s all well and good saying “a bit of everything to do with computing”, but in practice an approach like that is very hard. How do you balance? Is there a bias? If I refer back to my Breadth Vs Depth post, I am talking about programming in specific. However, there is a lot more to “computer science” than just programming.

The “Science” part of “computer science” suggests that this is far more analytical than, say, a “software engineer” which is more development orientated. That is not to say that a “computer scientist” shouldn’t be a capable “software engineer” and vice versa. Are these two disciplines blurring? What industry should a computer scientist go into, rather than a software engineer?

Comments on a postcard please!

Breadth Vs Depth

Something that I’ve recently been thinking about a lot is what should be taught at Universities, particularly in my area (Computer Science). What has been bugging me is trying to think about the balance between coverage and detail. Is there a bias as in you should focus more on one and not the other, or should they be covered in equal amounts.

A great way of applying this is using development concepts. Do you teach students many programming languages, giving them experience of many different syntaxes, and methodologies of programming. Or do you concentrate on fewer languages, but going into more detail about what you can do with them.

Personally, I’m inclined to go with the latter (to a point). Concentrate your efforts and get them able to apply their current knowledge to other areas, which they have not been taught. However, this has problems. Could the jeopardise the students in the future, make them feel restricted from branching into the unknown? Could it also mean that they don’t look as good to an employer?

Although I’ve used programming as an analogy (as it’s something I’m familiar with), this balance can be applied to any learning situation.

Comments please.