Summary

This is my dissertation for my undergraduate degree. The dissertation is the written document produced as a component of the part II project. The other main component of the part II project is the undertaking of some software engineering task from which you write the dissertation about. The part II project is an ongoing project for the whole of the final year.

So that’s why this document was written, but what’s it about? In the project, I explore creating a system which is given network conditions and generates a novel transport layer protocol optimised to the network’s conditions. Work like this has been attempted before (see previous work header in the dissertation), however it usually either involved optimising parameters for an already defined protocol or building a new protocol using very high-level building blocks. I wanted to see if I could use low-level building blocks to create completely new protocols. We are seeing more and more devices are being equipped with networking capabilities, this means we are seeing some very non-standard networks forming with constraints different to typical internet use. The utility of this project is that it could be used to create much better protocols for novel networks than just using standard protocols such as TCP or UDP.

A major challenge in the project was determining a way in which the “automated protocol synthesis” could be done effectively. As tempting as it often is to throw some flavour of machine learning at the problem, this is a specific problem case where there is not an easy fit to a pre-existing model (reasons discussed in the dissertation). Instead, I decided the best technique to use was genetic programming. Genetic algorithms are not without their own flaws though, particularly with genetic programming where any change to a program can lead to its ability at performing a task to be ruined. In real life though, complex systems have evolved which perform complex tasks. The genetic process undergone to create a new human will create approximately 64 mutations within their genome 1, and although mutations are most likely to be neutral, if they do have an effect on the organism then the effect likely only minorly changes fitness and is also likely to be a deleterious effect 2. This is to say that mutations, even deleterious ones, are rarely catastrophic to the functioning of the organism. This isn’t the case in genetic programming and so I spent a lot of time trying to understand current theories for why and how the genetics of real organisms work. This led to me creating a few new techniques for genetic programming based on more closely modeling seemingly important aspects of genetic mechanisms.

Thoughts and further work

I’m really proud of the project. It was very exciting to do something which felt a bit like “proper” research, and it has built confidence in my ability to learn about new topics and create new ideas. When I started the project I didn’t expect to spend so long looking into genetics and biology but I found it super interesting learning about it and thinking about how I could apply it to solving problems computationally. The dissertation was awarded a first-class which I was very happy about, but I am eager to more thoroughly explore the new techniques I developed. In order to properly explore the new techniques I need to create a simpler problem where I can do lots of experiments measuring how programs evolved using my techniques perform comparatively to programs evolved without. Hopefully by doing this I can provide evidence on whether the techniques do actually improve effectiveness of evolutionary search and if they do, this could be used to explain why these genetic mechanisms exist in nature today.

On this note, if anyone reading this would like to know more about what I did or is interested in looking into this further, then please please reach out! I’d love to collaborate and explore this further so feel free to contact me using the email on the about me page!

Github page for project


  1. John W Drake, Brian Charlesworth, Deborah Charlesworth, James F Crow, Rates of Spontaneous Mutation, Genetics, Volume 148, Issue 4, 1 April 1998, Pages 1667–1686, https://doi.org/10.1093/genetics/148.4.1667 ↩︎

  2. Huber CD, Kim BY, Marsden CD, Lohmueller KE, Determining the factors driving selective effects of new nonsynonymous mutations, Proc Natl Acad Sci U S A. 2017, 114(17):4465-4470, https://doi.org/10.1073/pnas.1619508114 ↩︎