Contents

M.Sc. in Computer Science: A Post-Mortem

About a month ago I finally defended my master’s thesis and can now officially call myself a Master of Science in Computer Science. The degree went well; overall I had good grades, receiving a 12 (or, equivalently for non-Danish readers, an A) for my master’s thesis. However, I did run into some hurdles along the way. I’m basically writing this post to reflect on my years studying computer science.

A Snail’s Race

I started studying Computer Science back in 2015 as a 20-year-old with no programming experience, and finished my bachelor’s degree in 2018. I immediately pursued my master’s degree, but I opted to study part-time for a few semesters, which delayed my graduation.

Just as I was about to originally begin my master’s thesis in 2020, the Danish educational ceiling was lifted, and I saw this as a unique opportunity to try something completely different. Thus, I applied for medical school at the University of Southern Denmark and was admitted. I dropped out from computer science and studied medicine for a few semesters, but eventually dropped out of that as well. At this point I had missed the deadline for applying for re-admission for the next academic year at the University of Copenhagen, and so I had to wait another year before finishing my computer science degree. In this time I worked as a substitute teacher for a Danish/German boarding school where I taught physics, chemistry, programming, and football (or, if you’re American, soccer). I finally got re-admitted at the University of Copenhagen in September of 2022 and finished my degree as expected.

The Master’s Thesis

This section will focus on the process of writing my master’s thesis specifically. I will go over the challenges I faced during the thesis and how I tackled them.

The master’s thesis at UCPH

At the University of Copenhagen, students do the master’s thesis over a period of around four months, with 30 ECTS allocated to it. The duration was reduced from six months a few years ago, and most supervisors therefore recommend that students do a small “project outside course scope” as preparation for the master’s thesis. I didn’t do this, but it worked out in the end.

This is in stark contrast to some other institutions. For example, I learned that students at the University of Oslo do the master’s thesis over a period of one and a half years, with 60 ECTS allocated to it—during which they also enroll in ordinary university courses. On the other hand, the master’s thesis at the University of Copenhagen is full-time.

My project

As the deadline for finding a supervisor and handing in the project description approached, I contacted a professor that was once my lecturer on the course Computer Systems at the University of Copenhagen. Part of his work as a researcher was focused employing a new, proprietary trust management system in various domains, and he was quick to propose the project that I eventually gave the title “HTPL: A Domain-Specific Language for the Construction and Evaluation of Trust Policy Languages in a Decentralized Web of Trust”.

The abstract for my thesis is as follows:

Quote
Trust management systems, central to secure and unmodified communication within digital networks, typically employ Public Key Infrastructures (PKIs) to manage public keys within a trust network. Despite their wide usage, PKIs present considerable challenges, including issues of centralization, offline functionality, inflexible trust representation, and certificate revocation. While these issues persist in traditional PKIs, an alternative approach, P3KI Core, has been proposed. Developed by Berlin-based company P3KI GmbH, P3KI Core utilizes a decentralized web-of-trust model to address these challenges. However, the system’s use of a low-level Trust Policy Language (TPL) comes with its own difficulties, including a susceptibility to errors and a need for user-implemented higher-level logic. This thesis does not seek to solve the problems inherent to common PKIs; instead, it focuses on addressing the limitations associated with the low-level TPL within the P3KI Core system. We propose a formalization of P3KI Core, complemented by the development of a high-level domain-specific language (DSL) that serves as an abstraction layer over P3KI Core. We demonstrate the utility of this DSL by modeling various trust networks and evaluating its design for readability and usability. The work detailed in this thesis emphasizes the abstract semantics and high-level DSL design, rather than delving into the low-level cryptographic and distributed system design implications.
Disclaimer
I signed an NDA with the company, P3KI GmbH, that built and owns the trust management system in question, and so I can’t give a too detailed account of the process.

P3KI GmbH is a small (and young) company. In addition to their informal whitepapers that are publicly available on their website , I was provided with a technical paper on the formal concepts and inner workings of the system. Though this was a great starting point, the document was relatively old (from 2017) and glossed over quite a few critical aspects of the system. Thus, even though it wasn’t initially planned, I dedicated a large chapter to reverse-engineering and formalizing the inner workings of the system, with a focus on the programming language theory. I proved that policies in P3KI Core’s Trust Policy Language (TPL) in fact induce a meet-semilattice; I developed a formal type system and semantics; and I proved various properties of this formalization mathematically. It was rough, but also a lot of fun.

When I felt I had formalized all necessary aspects and understood how everything worked, I implemented a simulator of P3KI Core in Haskell. This allowed me to test my understanding and identify any potential blind spots. Further, it allowed me to design, implement, and test my abstraction layer, HTPL, which introduced higher-level constructs and an extended type system. Other than the time constraint (see next subsection) this last stretch was pretty straightforward.

Moving back home

In the middle of my thesis I ran into another challenge. My wife and I are both from Sønderborg, a three-and-a-half-hour drive from Copenhagen where I studied. During the last years of my studies, we lived together in Odense, a two-hour drive from both Copenhagen and Sønderborg. When I started my thesis, my wife had already graduated and found a full-time job back in Sønderborg, and so she lived with her parents for about six months while I stayed in Odense. In the middle of doing my master’s thesis, specifically around April, we moved into a big house in Sønderborg, and during this time—which lasted a little over a month—I did not look at my thesis even once; moving into a large house proved to be way more work than anticipated. When all was said and done we were well into May, and I felt incredibly behind. In order to catch up, I worked tirelessly for the last month and a half of my thesis, at times even sleeping in my office so as to not disturb my wife in the middle of the night. This was, at best, an unhealthy way of working, and I will try to manage my time better in the future.

The silver lining

In the end, my thesis turned out great. Part of the pressure I felt as the deadline approached might have been the result of me somewhat overthinking somewhat.

For anyone interested, I’m hosting a user-friendly interface for both the P3KI Core simulator and the HTPL abstraction layer at https://htpl.vadg.io . This interface is also listed under Projects.

In Other News

I recently (that is, about four days ago at the time of writing) accepted an offer to do a PhD at the University of Oslo as part of the LEAP Project . I do like studying, and I’m pretty excited about the next three years—which is the standard duration of a PhD in Norway. However, this also means that I have to move away from my wife (and the house we just moved into) for a while. Nonetheless, being a first-generation university student and passionate about my field, the prospects of earning a PhD in computer science is incredibly intriguing.

Small Conclusion

Anyway, I wanted to write a quick update now that I have had time to relax after my master’s thesis defense. It quickly turned into a wall of text—I apologize for that (not really).

Cheers 🍺