The Praxis of Ideas (Why Computer Science is Awesome)

There has been a lot of coverage of ICT education in the UK press over the last few months, including a number noting how poorly ICT at School prepares students for real Computer Science. The relationship between ICT and Computer Science is part of the problem, as ICT seems to be commonly taught as a sort of advanced computer literacy (in the bad-old-fashioned sense of the word), rather than as Computer Science itself.

My personal view is that it is important to understand the distinction between these two topics. ICT is to Computer Science as Driving is to Mechanical Engineering, and you would no more expect a student of ICT to be successful on a Computer Science degree than you would expect Maureen from Driving School to hold down a job designing jet engines at Rolls Royce. That’s not to scorn ICT – its a key life skill, and I would always rather have trained drivers on the road than not – but it is different, and much of the coverage of the problems of ICT seek to conflate rather than clarify the differences.

As a lecturer of Computer Science, and the Senior Admissions Tutor for the Computer Science Programme at Southampton, I care a lot about the discipline. To me it is much more than the Bastard Son of Physics and Maths.

Addressing existential angst, bit by bit

Of course you can dissect the topic and look at its beating hearts. Undergraduate CS students do a mixture of theoretical studies (based strongly around discrete maths and logic) and practical skills (such as programming, data modelling, or understanding the software engineering process). There are also the famous specialisms – cookbooks of techniques and principles for graphics, artificial intelligence, networking – as well as more unexpected visitors from the humanities, as computer science also includes human factors such as creative design, cognitive psychology and social media.

You could argue that Computer Science is therefore a blend of Engineering and Information Science, a pragmatic set of skills for designing and building software based on a theoretical understanding of the power and limits of computation, and the ability of human beings to manipulate information machines.

You could argue that, but I think that there is a better way to capture the spirit of the discipline.

As xkcd once observed there is a great theory-practice relationship between a number of disciplines (biology is applied chemistry, chemistry is applied physics, etc.) It’s a bit of a stretch, but contains enough truth to be meaningful. The greeks (ever vigilant for ideas they could slap a name on) called this theory/practice relationship Praxis, a word that is intended to capture the relationship as a cycle. Theory informs practice informs theory.

So if high level disciplines like physics or chemistry drive applied subjects like mechanical or chemical engineering, what subject lies behind computer science? Its language is Mathematics, but that’s not the soul of the subject. For that you have to look in even dustier places. You will find clues in the reoccurring themes of Semantics, Semiotics, Linguistics, Communication Theory, and Structuralism; and see it realised in topics such as artificial intelligence, knowledge representation, computer vision, and virtual/augmented or mixed reality.

I would argue that at its best, computer science is a form of applied philosophy. Not a specialism, or an offshoot (as you might argue for psychology or economics), but applied philosophy – the tool by which we can manipulate our perceptions of reality, and explore new forms of self and society.

That is why Computer Science means so much to me; not because it helps you understand the modern world, not because it sets you up for a profession, but because – more than any other applied science – it is the praxis of ideas.