PhD in Informatics


I have recently finished a PhD in Informatics at the University of Edinburgh.

My supervisor is Prof. Stephen Gilmore.


My current research interests circulate around Collective Adaptive Systems and the various ways of expressing and modelling them.

Below is a simple visualisation of one particular kind of Collective Adaptive System at work that I created using the LibGDX Java game engine - the flocking behaviour:

The interesting feature of CAS is that even though each agent within the system follows the same set of basic rules, we can often observe an interesting emergent behaviour on the level of the whole collective.

Looking at our ant example above, each group of ants seems to be moving coherently as a single "blob", and when we see them from a distance or squint our eyes, we can almost imagine that instead of multiple tiny ants we are in fact observing two or three larger organisms moving on the plane.

However, if you examined the code of this simple simulation, you'd find that each and every single one of these ants follows exactly three very simple rules of behaviour: separation, alignment and cohesion.

The emergent behaviour - its complexity and unpredictability is, in a nutshell, is what is so fascinating about CAS.

During the first two years of my PhD (March 2015 - March 2017), I worked within the QUANTICOL project, which has now been completed.


Previous work

During my MSc, I worked in the J-PET (Jagiellonian Positron Emission Tomography) group, developing sofware for the prototype of the proposed device.

This work consisted of a number of things, but it included two things I really like: programming and tinkering.

One of the best things was getting my hands on the actual hardware related problems that we had to solve - very often using rather loosely improvised means.

The tasks ranged from light-proofing a photon detector using a cardigan to trying to grab a 2mm radioactive source with a pair of very long pliers, without dropping it in the process.

Most importantly, I had the chance to work with massive amounts of variable-quality data, having to apply my then purely theoretical knowledge of programming to the task of processing, purifying and reorganising the terabytes of raw files collected using a digital oscilloscope. This experience taught me to produce code which can withstand data anomalities as well as being able to process massive amounts of it in a reasonably short time.


List of publications: