Nik Sultana

I'm a Research Associate on the Network-as-a-Service project. I'm interested in language design and implementation, particularly of domain-specific languages used in networking. I'm also interested in formal modelling and analysis of such languages. I belong to the Networks and Operating Systems group.

Contact: first.last ("at" symbol)

Previously I wrote a PhD dissertation on proof translation in the Automated Reasoning group. I was very fortunate to have a long collaboration with Christoph Benzmueller. I also gained a lot from interning at MSR multiple times, where I worked on the application of logic to security and biological modelling.

Before that I worked in the Schwichtenberg group after writing an MSc dissertation on the validation of refactorings. Prior to that I participated in the Vulcanus in Japan programme, after finishing my first degree in Malta.


Writing software is one of the best things about computer science. Here I link to bits of software I've written or contributed to. Other small things can be found on my Github page.

Most of the work I've done so for is related to logic. This also applies to the software I've written or contributed to.

Recently I've been working more on networking.


I enjoy teaching, especially in the the small-group tutorial style done in Cambridge (called "supervisions"). I've supervised the following courses:

  • Compiler Construction
  • Computer Networking
  • Concepts in Programming Languages
  • Denotational semantics
  • Discrete Maths
  • Logic and Proof
  • Operational semantics
  • Software and Interface Design
  • Specification and verification

I've been a frequent user of functional languages for several years. Some years ago I wrote up some tips on Haskell programming to help spread the functional word.


Another great thing about computer science is that programs aren't the only objects you can construct -- you can also construct proofs using a similar mindset and tools as you would construct programs. Proofs are used to communicate rigorous and formal arguments justifying an assertion. Often this assertion is something like "for any input, this program's behaviour agrees with its specification".


Scientific wordware

Some refereed articles:

General wordware

I also enjoy writing other kinds of articles.

Misc interesting