CS + Problem Solving

Tree of European languages

CS+X is all about diversity in the computer science field, encouraging participation from underrepresented groups. But it is also about how computer science is used in surprising and wonderful ways, designed to encourage exactly those groups which can feel alienated from the stereotypical culture to give it a go.

I was privileged enough to be able to speak at the UC CS+X Festival run by CompSoc (the UC Computing Society) this year. This is a student-run event which invites speakers from many departments around the university to share how computer science has influenced their work.

My talk was a very general talk, focussing on not a specific subject (I have been fortunate enough to work with multiple different research groups around the university), but on how ideas in computer science can enable problem solving at a higher level. For this talk I spoke about what it means to solve a problem, and how computer science has let us ask the question of what it actually means to solve a problem. It has also enabled us to discover problems that simply cannot be solved, no matter how hard we try, or problems that we cannot actually show are hard at all.

For a more concrete demonstration, I picked just one algorithm, and all the uses it can have. My choice was normalised compression distance (NCD) with tree clustering, a relatively obscure algorithm that takes on a very fundamental concept: what does it mean for two things to be similar? NCD provides a surprisingly versatile metric on a wide range of inputs, which can then be used by pretty much any clustering algorithm available. I chose tree clustering because it is trivial to visualise and not very complicated to program.

The slides for the talk are available in PDF form, and the code I used to generate the tree of languages can be downloaded as a ZIP folder.