Department of Computer Science and Technology

Systems Research Group – NetOS

Student Projects (2018—2019)


This page collects together various Part II project suggestions from the Network and Operating Systems part of the Systems Research Group. In all cases there is a contact e-mail address given; please get in touch if you want more information about the project.

Under construction: Please keep checking back, as more ideas will hopefully be added to this page during the coming weeks.

Note: there are a number of stumbling blocks in Part II project selection, proposal generation and execution. Some useful guidance from a CST alumnus (and current post-doc) is here.

Current project suggestions

1. TripIt! for Papers

Contact: Richard Mortier (email)

Recently introduced rules from the UK Research Councils require that all published academic outputs are made available as open access within 3 months of publication, typically via institutional repositories. Unfortunately most institutional repository submission processes are rather cumbersome, involve extensive human interaction, and are prone to being forgotten or delayed potentially rendering an academic output inadmissible for the next Research Evaluation Framework exercise.

TripIt is a rather useful service that allows a traveller to manage travel plans by forwarding email confirmations, tickets, receipts, etc to an email address ([Javascript required]). Upon receipt the TripIt service aggregates and parses the information concerned into a sequence of "trips" which can then be exported as (e.g.) a Google Calendar. This makes it quite straightforward to have trip details appear in one's calendar without needing to go through the tedious and error-prone process of re-entering all details manually.

This project will design and build a service that provides TripIt-like interaction for tracking academic outputs. Elaborating details of the workflow forms part of the project, with care needing to be paid to the requirements for REF eligibility as well as common academic working practices for conference and journal publication. The service can be implemented using any appropriate tools, though implementation as a MirageOS unikernel using the Irmin storage backend would be particularly welcome.

2. MirageOS Protocol Servers

Contact: Richard Mortier (email)

MirageOS is a unikernel framework using the OCaml language. Among its primary targets are building small, lightweight cloud-hosted network services. This project will design and build such a service, evaluating for performance on a number of axes. Suitable services include the XMPP and 0MQ messaging standards.

Code for MirageOS must be written in OCaml, so familiarity with OCaml would be useful. (But projects of this type have been successfully undertaken without prior knowledge of OCaml.)

3. OCaml meets WebKit

Contact: Richard Mortier (email)

WebKit2 is an incompatible API layer for WebKit, the web content processing library from Apple, supporting OSX, iOS and Linux. It implements a split process model where web content lives in a separate process from the application UI. PhantomJS is a headless wrapper for WebKit, scriptable via JavaScript used for screen capture, page automation, site testing, etc., and supporting CasperJs as a higher-level API wrapper.

Web automation scripts in JavaScript for CasperJS can rapidly become rather complex -- it would be nice to have a more modern, feature rich language to do this, such as OCaml. One way forward would be to use the Ctypes library which enables binding C libraries using pure OCaml.

This project is complex, and you will benefit from having experience with at least one of OCaml or WebKit, as well as familiarity with C programming.

4. Niche Social Networks

Contact: Richard Mortier (email)

Social networks such as Facebook support a wide range of interactions and purposes. However, there are times where it is not appropriate to push smaller scale, more niche social groups onto such generic platforms while it would still be nice to take adavantage of some of their features.

This project will build a simple social-network-as-a-library that can provide the standard features of a social network (pseudo-identity, tracking followed/following relations) while interfacing with a range of other services such as email. A particular demonstrator application will also be built that allows members of a group (e.g., a sports society, a College fellowship) to express interest in a subset of other members' behaviours, and be notified when those members perform a certain action (e.g., sign up to attend a regular social event). A number of different notification channels could be integrated (e.g., email, SMS, telephone).

Ideally this will be built as one or more microservices using the MirageOS unikernel framework, but other implementation platforms can be considered.

5. Databox

Contact: Richard Mortier (email)

Databox is an active research project developing means to enable individuals and organisations to mediate access to data they consider personal, or private. The platform supports access to local external resources such as IoT devices as well as processing of data locally, potentially in coordinated fashion with processing of data on other Databoxes.

This proposal is really a placeholder for your idea-- what personal data processing application are you interested in building? What device are you interested in interfacing to the Databox? Let's talk...

Databox allows code to be produced in any language, but familiarity with Docker and containerisation may be helpful.

6. Computation Engine for Distributed Data Analytics

Contact: Richard Mortier (email), Liang Wang (email)

Owl is an emerging numerical platform developed in the functional programming language OCaml. The aim is to build a flexible and full-featured numerical library for modern data analytical applications. With Owl, the analytical applications can be written as concise as Numpy and Julia but runs as fast as C, with additional features such as static type-checking and etc.

Owl has its own parallel and distributed computation engine which is able to transform both low-level data structures and high-level neural network models into distributed computation objects. This project will focus on further developing and evaluating Owl's current computation engine. If you are interested in building modern distributed data analytical frameworks, please contact me.

[1] Owl's repository:
[2] Owl - An OCaml Numerical Library, OCaml Workshop, Sept 2017, Oxford (TBA)

Pre-requisites: This project requires some basic knowledge on OCaml, synchronisation control, distributed systems, data processing frameworks.

7. Artificial Reality mobile app for home-based testing of memory in people at risk of Alzheimer’s disease

Contact: Sandra Servia and Cecilia Mascolo

Memory decline is common in older people, but there is no cheap and accurate means to differentiate those at low and high risk of developing dementia. In collaboration with research neurologists, we have developed an artificial reality based smartphone app for testing the cognition capabilities of people at risk of developing Alzheimer’s disease. This application works by randomly placing objects in the patients’ environment and later asking them to remember which object was placed where. Several improvements might be done to this app in order to improve its usability and user experience, such as:

- Making the app more realistic by detecting obstacles, different planes, etc. and being able to realistically place objects considering the different obstacles and planes.
- Migrating the app to a different platform (Android). Currently, the app is developed for iOS using the ARKit library.
- Profiling the app for battery consumption and apply techniques that help to minimise it.

8. Customisable application for iOS to speed up mobile health studies

Contact: Sandra Servia and Cecilia Mascolo

Developing smartphone applications to conduct research studies is a relatively simple task for a Computer Scientist. But this task becomes much harder when medical researchers such as psychologists, neurologists or experts in primary care are in charge of built it.

In order to facilitate and speed up the development of smartphone applications for research studies, we aim to develop a framework or configurable application for iOS that provides medical researchers with ready-to-use smartphone applications to conduct their studies. This application will allow for experience sampling data and passive sensing data collection, from different sensors and for different tasks. That is, it will allow researchers to select different mechanisms to assess and improve the health of the individuals, such as providing questionnaires to timely monitor the health and habits of participants, and textual notifications to promote healthy behaviours. At the same time, it will allow to collect data from the different sensors of the smartphone (GPS, accelerometer, microphone, etc.) at different sampling rates in order to indirectly monitor individual’s behaviour.

9. In-Network Computing

Contact: Noa Zilberman

In-network computing is an emerging research area in systems and networking, where applications traditionally running on the host are offloaded to the network hardware (e.g., switch, NIC). Examples of applications offloaded in the past include consensus protocols, caching and key-value store application. The goal of this project will be to offload a traditional application to run in the hardware (most likely on a NetFPGA platform).
There are many applications that can be off-loaded, thus more than one project in available here.

[1] Sapio, Amedeo, Ibrahim Abdelaziz, Abdulla Aldilaijan, Marco Canini, and Panos Kalnis. "In-Network Computation is a Dumb Idea Whose Time Has Come." In Proceedings of the 16th ACM Workshop on Hot Topics in Networks, pp. 150-156. ACM, 2017.
[2] Huynh Tu Dang, Pietro Bressana, Han Wang, Ki Suh Lee, Hakim Weatherspoon, Marco Canini, Fernando Pedone, Noa Zilberman, Robert Soulé, "P4xos: Consensus as a Network Service", Tech Report, University of Lugano 2018/01, May 2018 (link).
[3] Nik Sultana, Salvator Galea, David Greaves, Marcin Wojcik, Jonny Shipton, Richard Clegg, Luo Mai, Pietro Bressana, Robert Soule, Richard Mortier, Paolo Costa, Peter Pietzuch, Jon Crowcroft, Andrew W Moore, Noa Zilberman, “Emu: Rapid Prototyping of Networking Services”, Usenix Annual Technical Conference (ATC), July 2017 (link).

Pre-requisites: This project requires basic knowledge of computer networks and some ECAD experience.

10. F1-NetFPGA

Contact: Noa Zilberman

NetFPGA is an open source platform for research and teaching, used for rapid prototyping of network devices. Over the years there have been 3 generations of NetFPGA platforms, with I/O capabilities ranging from 1GE to 100GE. The NetFPGA community has over a thousand members, in over 250 academic institutes and 47 countries.
In recent years, multiple cloud providers have introduced prgrammable devices (TPU, FPGA) to the cloud offering. The goal of this project will be to create F1-NetFPGA: a NetFPGA platform running within Amazon's EC2 on the F1 platform. The project will focus on building the F1-NetFPGA infrastructure, and will demonstrate the migration of several reference projects.

[1] NetFPGA
[2] Amazon F1

Pre-requisites: This project requires basic knowledge of computer networks and good ECAD skills.

11. Feature Extraction in Real Time

Contact: Noa Zilberman

Sensors used in IoT and cyber physical systems (CPS) increasingly generate data. While the data rate is low, the aggregation of thousands and tens of thousands of these devices is challenging to end-host devices and communications infrastructure. Not all the data generated by these devices is required: often there are just specific features that need to be extracted from the streaming data.
The goal of this project is to build a programmable platform that adaptively extracts features from network packets in real time. The project is expected to be written in P4, a language for programmable data planes, with an implementation running on P4-NetFPGA.

[1] P4
[2] P4-NetFPGA

Pre-requisites: This project requires basic knowledge of computer networks and some ECAD skills.

12. JSON diff for OpenBanking Data

Contact: Richard Mortier (email)

diff is a well-known tool for comparing two text files and showing the differences. Additions over time have included word diff where the differences are shown, not as lines but as individual word or character changes, making it easier to understand a set of changes particualrly when made to prose. However diff is not great at showing differences to more structured text, such as JSON. Being able to observe from the output that the change between two JSON files is in fact the addition of a key, and the extension of a list, is not straightforward from line-by-line diffs.

This project will develop a structured diff for use with JSON data, able to output changes between two input files in a semantically relevant manner. The specific dataset to be used is a result of having scraped the OpenBanking Open API endpoints for over 6 months, collating data about bank services, branches, ATMs and so on. A nice output from the project would be to be able to display how different banks have opened and closed branches and ATMs over that period. For preference the tool would be implemented in the OCaml programming language, but there is no requirement to do so. (As implementations of similar tools already exist in other languages, care would have to be exercised to distinguish from those if the same language were chosen.)