Here are some past project proposals, to give you a flavour of the kind of project that I tend to supervise. You can find current project proposals in the relevant directories on studres. I am happy for you to approach me with your own project suggestions related to your interests: it’s far easier to stay focused on a project for a whole year if it is something in which you are already interested. Look at my research pages to see my own interests and expertise, and if you see something you like, come and talk to me. Basically I am happy to supervise projects in:

  • networked multimedia (I will supervise games projects but they have to involve academic study of games, not playing them!)
  • wireless/mobile/pervasive networks and systems
  • network security
  • network privacy
  • online social networks
  • HCI, usability (with a network security or privacy spin)

Some general hints:

  • Start early! You may want to do some background reading, learn new languages, etc. over the summer.
  • Think about testing and evaluation. Your project isn’t just about writing code, it is about fulfilling a set of objectives. Determining whether your objectives have been met will require evaluation.
  • Also please look at my list of research resources for some general links that may be useful for my projects.
  • Many of my projects involve some statistical analysis. I recommend that you have at least taken MT1008 or have similar training if you would like to do a project with me.
  • I have noticed that an increasing number of students are interested in projects than run on the iPhone. I will not supervise projects that run on the iPhone/iPad/iPotato/iFoobar. There are two simple reasons for this. First, you do not want your project to depend on Apple’s tyrannical development policies, which may limit your ability to distribute or test your project. Second, Apple insist on the use of particular development processes, which may not be the most suitable ones for your project. That said, I am happy to consider general mobile computing projects, as long as they do not depend on Apple products. There are many other members of staff who are not quite as fervent in their stance on Apple, so if this is a strict requirement, then I suggest you approach one of them.

Augmented Reality Experience Sampling (CS4099)

We have been using the Experience Sampling Method (ESM) for conducting a variety of user studies, trying to understand how people use multi-modal communications and online social networks, amongst others. The idea behind ESM is that by asking people questions in situ, one should be able to obtain a richer and more accurate set of responses.

New mobile devices such as smartphones and tablets, which have cameras and other sensors, may enable the use of augmented reality to further trigger more reliable responses. This project will look at developing such a system, where a participant can be asked questions about their current environment, and integrate this with an augmented view of the environment.

Prerequisites: Java programming since you will be expected to use an Android phone or tablet.

Project difficulty: M/D


Augmented Reality Privacy Icons (CS4099)

Mozilla recently presented a proposal to the W3C for Privacy Icons to indicate how data are used by a website.

This project will explore the use of privacy icons to distinguish how private data are leaked and used in the physical environment (e.g., location or activities being sensed and disclosed), using an augmented reality interface on smartphones or tablets. An excellent project will provide an interface to allow users to alter their privacy policies to prevent the leak of information, and conduct a user study to test the efficacy of this.

Prerequisites: Java programming since you will be expected to use an Android phone or tablet.

Further ideas can be found in our Virtual Walls paper.

Project difficulty: M/D


Bibliometrics tool (IS5198)

As part of our CRAWDAD wireless data archive, we keep statistics about which papers have used the network datasets that we make available. This relies on quite an ad hoc process: data users are encouraged to tell us when they write papers, and we also periodically check paper archives such as IEEE Explore and the ACM Digital Library to see if there are new papers referencing our data. This is quite tedious and error-prone.

This project will retrieve a cortex of research paper data from archives on the web and use natural language processing to determine which papers have cited CRAWDAD datasets. The results will then be used to calculate bibliometrics and test hypotheses about the utility of sharing data.

This paper may be of interest. Experience with python will be of use, as this project will leverage the Natural Language Toolkit.


Bluetooth mobile phone application installer (CS4099)

Many of my research projects involve running programs on mobile phones. It can be time-consuming to install new code on all of these phones. This project will build a system for deploying new programs on the phones. The system will need to run on a Linux-based host equipped with a Bluetooth radio, and use Bluetooth to communicate with the phones. The system will:

  • locate and store the latest version of programs (e.g., using a version control system)
  • detect whether one or more of the project’s mobile phones is in range
  • compare the code running on the phone(s) to the latest version
  • deploy newer code if needed
  • test that the new code has been successfully deployed

This project requires knowledge of Python, Linux and shell scripting. Experience with Bluetooth and with programming Android or Symbian devices is a plus.

Project difficulty: M/D


Bluetooth ping pong (CS4099)

Accelerometers embedded in recent mobile phones allow new ways of playing with these devices. For example, virtually throwing a ball from one phone’s screen to another can be done through bluetooth by shaking the device.

In this project, the candidate must demonstrate an object displayed on a mobile being thrown into the screen of another nearby phone by a simple hand motion. The final software should:

  • run on Nokia or Android mobile phones (provided)
  • analyse in real-time accelerometer readings
  • display a ball moving towards an appropriate trajectory
  • virtually send a ball and receive incoming balls
  • be able to discover other players
  • be cheat-proof!

Prerequisites: some experience with programming mobile phones would be useful, as would knowledge of Bluetooth.

Project difficulty: M/D


Bumping (CS4099)

Bump is not just a short URL, but a popular app for smartphones to exchange information based on proximity. Even better is that they provide an API to leverage this functionality in other applications.

I have a few ideas for applications that might benefit from “bumping”:

  • Mobile advertising (see other project suggestion)
  • Music/ebook/movie recommendations and exchange
  • Opportunistic data exchange

This project will attempt to build one of these, or perhaps another, application.

A CS4099 project will build a privacy layer on top of Bump, to enable the exchange of information according to users’ privacy policies.

Project difficulty: M/D to OR


Conference calendar (CS4099)

Academic research in computer science typically revolves around publishing in conferences and workshops. Keeping track of deadlines for these various events is quite difficult. There are services such as WikiCFP but these involve the manual process of discovering a conference and inputting the various details into a web form. This project will automate this.

This project involves the development of:

  • A crawler to collect conference and workshop information from web pages and mailing lists
  • A parser to extract relevant information about these events (this may involve some NLP, or simpler heuristics as required)
  • A suitable schema for representing the common important information about research events
  • Automated data entry into wikicfp or other web 2.0 services
  • Integration of some of this event information into our CRAWDAD calendar

Project difficulty: M


Energy consumption when sending data (CS4099)

Recent mobile phones can send data through WiFi, EDGE/UMTS, or bluetooth. Finding the most energy-efficient way of sending data is important to extend the battery life when using sensing applications.

This project investigates the energy consumption of sending data using different technologies and aims at finding a solution that automatically chooses the cheapest way of sending data. The project should provide:

  • a better understanding of the different energy consumptions, depending on the context (e.g., data size, frequency, signal strength)
  • an energy-efficient solution to upload data from a mobile phone

Knowledge of Python is a requirement for this project. Previous experience with Symbian phones is appreciated.

Project difficulty: M/D


Gesture-based whiteboard capture (CS4099)

Like most members of staff in the School, I have a whiteboard in my office which I use for generating ideas and scribbling notes. At the end of a meeting, I will take a photo of the whiteboard to remind myself of its contents before they are erased. I would like to automate this process using the wonders of wireless technology.

This project will:

  • Use a Wi-Fi- and Bluetooth-equipped mobile phone camera (or perhaps a netbook with a webcam) to take a photo of a whiteboard
  • Use the camera to recognise gestures (e.g., someone doing a jumping jack) to trigger photo capture
  • Parse a calendar to determine when a meeting is coming to an end and automatically trigger photo capture
  • Store the photos in a suitable data store
  • Send the photos to meeting participants as gleaned from calendar information, or use Bluetooth to send to everyone in the room
  • Use pattern recognition to transform the photos into something more usable (e.g., text + graphics)
  • and many other extensions…

Prerequisites: previous experience with Python and Java or C++.

Project difficulty: D/OR

Prerequisites: CS3102


Is Java (or the JVM) fast enough? (CS4099)

Networking researchers such as myself are often dismissive of high-level languages such as Java, claiming that you need to use C for high-speed packet processing and so forth. This claim, however, may well be based on personal biases. This project will test the hypothesis that C is the only language worth considering for network research. The project comprises:

  • The design of some simple test programs to read, write and transform network packet traces (using the libpcap library functions)
  • The implementation of these programs in C and some other higher-level languages (Java, OCaml, F#, Python, …). It might be particularly interesting to try some of the new languages that use the JVM such as Scala, Clojure or Groovy. Note that I don’t want you to just use pcap wrappers, you will be reimplementing some of the pcap functionality in one or more languages. So this is potentially quite a complicated project.
  • Performance analysis, profiling, etc of these implementations, using real-world network traces from CRAWDAD. A good project will automate this.
  • Some conclusions, and suggested improvements (ideally implemented improvements) for the different programs and/or languages.

Prerequisites: experience with C and Java.

Background reading:

Project difficulty: D


Metadata for wireless network experiments (CS4099)

In order to archive and share network data in our CRAWDAD wireless data archive, it is necessary to store metadata about each set of data. These metadata contain information about the data, such as experimental setup, file format, collection method, sanitisation method and so forth. Currently this is a manual process - after a set of data has been collected, we interview the data collector and compile the metadata. This process may be error-prone.

This project will investigate methods for automated metadata creation. This may involve a questionnaire tool at the experimental design phase, and also tools to automatically generate statistics and collect appropriate information during the experiments themselves. To test the constructed system, one or more experiments should be conducted, with the automatically-generated metadata inserted into the CRAWDAD website and wiki.

Project difficulty: M/D


Mobile advertising (CS4099)

Advertising drives many Internet companies today, but the privacy risks involved may deter consumers. We are developing a privacy-aware advertising system for mobile users, and this project will help with this. The system involves the delay-tolerant delivery of advertisements to mobile handsets, and the privacy-aware delivery of “click” reports back to advertisers.

A medium difficulty project will implement an advertisement delivery system using Bump (see other project suggestion), while more difficult projects will implement other aspects of the system.

See our book chapter for further details.

Project difficulty: M to OR


Mobile phone inventory system (IS5198)

We use a number of mobile phones in our research. It would be useful to have a system that could store information about who is using these phones, for what purpose, and so forth.

This project involves:

  • A database to store information about the devices
  • A system for “checking in” and “checking out” devices. For instance, you might use Bluetooth to send a message from a phone, which would automatically update the database entries.

Mobile phone privacy proxy (CS5999)

Privacy is an important problem for any Internet user these days, and particularly for mobile users where such sensitive information as location, activity and presence may be monitored. Smartphone applications are particularly bad at collecting such information unnecessarily, and tools have been developed to fight this. See this Boing Boing article for a discussion of a general-purpose “privacy blocker” that obfuscates personal data before sending it to a requestor.

This project will develop and evaluate a “privacy proxy” for Android phones that will obfuscate location and social network information for use by applications.

Prerequisites: Java network programming

Project difficulty: D


Network trace sanitisation (CS4099)

Network monitoring often involves the collection of sensitive data, such as the contents of application-layer data (e-mails etc), IP addresses, the location of users, and so forth. Often such sensitive data are unnecessary for a researcher’s experimental aims and so should be removed. Indeed, in many cases there are legal requirements to remove such sensitive data if research is to be carried out, or if data are to be shared with other researchers. Removing data can sometimes make it difficult to do research, however, and so we typically sanitise data so that it is still usable for research, but do not contain sensitive information or identify individual users. A basic project will:

  • build sanitisation tools for some of the datasets in the CRAWDAD archive

An excellent project will:

  • build an extensible framework for sanitising arbitrary data, using the PADS system or similar

This project will require:

  • Familiarity with C. You could do packet processing in Java but I suspect that it would be pretty slow (see my other project suggestion below…)
  • Familiarity with other scripting languages (perl, python, awk etc)
  • An understanding of what network packets look like

Background reading:

Project difficulty: D


Opportunistic gaming (CS5999)

Opportunistic networking, where mobile devices exploit any available means to forward data, is one possible paradigm for enabling network access in the absence of network infrastructure. Many of the applications proposed for such opportunistic networks are store-and-forward messaging or media sharing applications. But this does not preclude the use of opportunistic networks for other applications. This project will develop a simple game for opportunistic networks using the Haggle framework for Android phones.

Prerequisites: Java network programming

Project difficulty: D

Background reading:


Personalised tourist safaris (CS5999)

Tourists visiting a new place often wish to find information that is not available in generic guide books, or is specific to their personal interests. This project will look at using recommender systems to build location-aware tourist “safaris” or trails which a tourist can follow based on their specific requirements. This project will be working with a designer, Jon Gill who will be providing suitable content for tourist applications in St Andrews.

Project difficulty: M/D


Static website generation (IS5198)

Static website generators such as Jekyll and Hyde have become popular recently, as such websites can be more scalable and easier to deploy under particular circumstances. This project will evaluate the costs and benefits of migrating from a dynamic to a static website. The CRAWDAD wireless data archive will be used as a case study. The expected output of the project will be a statically-generated version of the CRAWDAD data archive, and a detailed quantitative performance evaluation of the benefits of this web site.


Wiki-based metadata editing (IS5198)

We run the CRAWDAD data archive, which is the largest data repository for wireless network data. One big stumbling block to providing more data to the research community is the difficulty of annotating data, i.e., providing metadata.

This project will develop wiki-based tools to allow users to crowdsource metadata collection. A successful project will be integrated into the CRAWDAD website.

Prerequisites: familiarity with a server-side web programming language, e.g., Ruby, PHP

Project difficulty: M

Background reading: