Where's the science in computer science?

23 April 2009

Back in the 1980s as I was thinking about what to do at university, I was told that doing a Computing A-level was a bad idea if I was going on to do Computer Science as a degree. It was all academic as I wound up picking chemistry in a process that wasn't much more deterministic than flipping a coin but I remember the argument that computing was now a science and desperate to flaunt it.

In practice, it was more an issue of branding than of reality especially at places such as Imperial College, London, as computing science was administered by the City & Guilds College of engineering, not the Royal College of Science where, ahem, all the proper sciences hung out. And dodgy 1960s civil engineering bequeathed them a building with a dirty great big crack down the front.

Listening to Joseph Sifakis of the CNRS Verimag laboratory talk at the Design Automation and Test in Europe (DATE) conference this week, it seemed as though Computer Science's status of a science is still in doubt.

In a whirlwind tour of computer science for building embedded systems - that is, the computers that pilot aircraft, control car brakes and control consumer gadgets - Sifakis said practice has far outstripped theory. There is very little in computer science that lets people take a model and predict how its real-world equivalent will fare. Want to know? You'll have to build a real one and find out.

1 Comment

Hi Chris. The C&G ownership of Comp Sci Dept at IC might just be more about RCS snobbery than lack of appreciation of the validity of the science. I took EE, but had many friends in Computer Science who, while I was fiddling about with transistors (it was a long time ago, but at least we're not quite talking valves), were designing compilers, debuggers and operating systems - so demarcation was as it should be, at least in the ordered academic world.

Having said that, on leaving IC, my very first job in industry was to write a debugger in assembler. I felt well-equipped enough to do this, my familiarity with assembler programming compensating for my lack of experience in tools architecture. I wonder, how comfortable would a Computer Scientist feel when faced with a familiar problem but in an unfamiliar low-level language?

The answer, I hope and believe, is "very", in that the good Computer Scientist would have both the adaptability of an engineer, and the discipline of a scientist. In a science where things don't stay still for long enough to examine them from all angles, engineering can't, and shouldn't, be kept at arm's length.

Having said that, there are now big questions that make me wish to hear of Computer Scientists walking dusty halls in white coats, rather than rolling their sleeves up and getting practical. The challenges posed by the failure of hardware to continue to scale neatly according to Moore's Law need radical solutions, and where the physicists can't take us forward, we hardware engineers look expectantly to those scientists of computers...