Computer Laboratory

Old ACS project suggestions

Project suggestions from the Digital Technology Group

Analyzing Real-World Testing Practice

Supervisor: Alastair Beresford

Originator & Day-to-day supervisor: Kathy Gray

Software testing is an important part of software development; however, developing tests can be an expensive and error prone process. Improved tools can simplify test development but should be based on real world practice. Identifying how programmers specify correctness properties in tests requires analyzing a program and its test suite.

This project is to develop a tool to analyze Java programs and extract information on test specifications. This will include method-level coverage, percentages of different styles of tests that occur, and extracting example tests that suggest atypical practices.

Tests in Java range from simple uses of the JUnit API such as

@test distance {
   Map m = Map.setup();
   assertEquals(m.distance("Cambridge", "London"), 60);
}

to complex programs with nested try blocks, cloned and copied values, and manual assertions of success and failure. The analysis should distinguish between tested methods, such as distance, and methods used as predicates to aid the test.

The tool will traverse a Java AST, generated using the front-end of an open-source Java compiler such as jastAddJ or Polyglot. Analysis will examine real world open-source Java applications such as Eclipse, Java-portions of Open-office.org, ant, and others.

This work contributes to on-going research in the CPRG on test specifications (based on a limited manual analysis of real programs) and test development.

Encryption and authentication for component-based middleware

Supervisor: Alastair Beresford

Originator & Day-to-day supervisor: David Evans

Component-based distributed systems consist of many independent pieces of software interacting via communications networks; many components are then typically connected to accomplish a useful task. Data that flow between the components may be commercially valuable or contain private information, meaning that it should be encrypted to prevent unauthorised access. Furthermore, components should authenticate their peers, ensuring that they are talking to the correct component; man-in-the-middle attacks should be impossible; and it should be difficult to interfere with the communication between any two components by inserting, removing, or re-ordering messages.

The TIME project has supported the development of a middleware where components communicate using long-lived TCP connections. The middleware currently lacks authentication and encryption and this project seeks to address this problem by implementing them.

The choice of appropriate encryption and authentication schemes will require some careful thought. For example, the middleware supports third parties diverting an existing connection between two components, perhaps because one or more components needs to be replicated, hardware replaced, and so on. What does this mean for authentication and encryption? How should the business logic of components see all of this, including expressing their authentication needs?

Work on this project should begin by examining the literature to see what existing solutions might exist (X.509 certificates and Kerberos are two good places to start). While a solution doesn't have to be based on an existing scheme, they should inform the design. The resulting scheme should be implemented as part of the SBUS / PIRATES middleware. (You might also like to look at the following paper.)

SBUS/PIRATES consists of about 25,000 lines of C++ and has been used on various flavours of Linux and MacOS, so you must be adept with C++ and Unix-style environments.

GPU-Based RAW Digital Photo Manipulation

Supervisor: Robert Harle

To get the best from today's mid- to high-end digital cameras, professionals usually shoot in RAW format. A RAW file is basically the raw data measured by the image sensor which requires interpolation to create a useful image (you can think of a RAW file as equivalent of a negative in conventional photography). Camera manufacturers provide software to manipulate a RAW file and output a JPEG. The best algorithm for the conversion is known as AHD and it takes approximately 20+ seconds to run on a large (12MP) image.

This project will be about modifying dcraw/ufraw (popular open source RAW development packages) to use the GPU through Nvidia's CUDA software. Using a GPU, the AHD algorithm should be able to process 30+ images per second! The project will look at implementing AHD to run on a CUDA-enabled device and looking at how effective various trade-offs and tricks are.

Once that core part is done, there are then plenty of extensions to be found by taking other algorithms in dcraw (sharpening, etc) and pushing them to the GPU.

Prerequisites: C programming, possibly C++.

Bluetooth--Based Tracking System

Supervisor: Robert Harle

Today's mobile phones almost all contain Bluetooth transmitters that, if switched on, can be used to track the location of the phone in a building. This project will involve creating a system that coarsely tracks a phone as it moves through the Computer Lab. The technique requires that the Bluetooth MAC address be registered and thereafter devices deployed around the building 'ping' registered phones. The project will need to consider how to scheduling pings for specific phones and to handle large numbers of tracked devices as well as presenting the tracking information.

Sports Performance Records

Supervisor: Robert Harle

As part of the EPSRC SESAME project, we are collecting high speed video and synchronised on-body sensor data about sporting performances during training. Unfortunately, the athletes and coaches are sensitive as to who gets to see the data collected on them: athletes don't want their rivals to be able to analyse their weaknesses, coaches want to be able to annotate records without the athlete seeing everything written.

This project would look at ways of identifying/authenticating athletes during training, and securing recorded data in such a way that different people have different levels of access, probably through a web interface.

Power Consumption of Mobile Phones

Originator: Andrew Rice

Mobile phones are increasingly complex devices with numerous different hardware components. We've recently developed some hardware and a software framework for producing fine-grained measurements of a phone's power consumption. This shows detail such as the radio switching on and individual packets being sent. We've currently only looked at the WiFi hardware in detail and so this project will investigate the power consumption of other aspects of the phone such as Telephony, GPS and inertial sensing. Interested students should contact Andrew Rice (acr31@cam.ac.uk) for a pre-print copy of the research paper describing the work so far. This project will require work using Google Android handsets and development in the Java programming language in addition to developing the measurement hardware itself.

Minimizing data transmission of location information from mobile devices

Originator: Andrew Rice

There are numerous applications which revolve around transmitting location information from a mobile device to a server (or vice-versa). The most simple of these might be a simple online map service which shows your location (aka Google Latitude). Conventionally the rate at which the mobile device sends location updates is decided in an ad-hoc way by sending an update every x seconds (for example). An alternative strategy is to aim to send an update whenever the server's estimate of the mobile's position is wrong by more than x meters. This estimate made by the server might be as simple as the last known position but it could also be the output of constant velocity predictor, a kalmann filter or a particle filter. To achieve this error-triggered behaviour the mobile client would implement the same estimation filter that the server is using and then only send updates to the server once the estimate diverges significantly from the mobile's measured position. The aim of the project is to investigate the inherent trade-offs between computation demands and communication demands imposed by different predictive techniques. This project will be done on Google Android handsets using in the Java programming language.

Tabletop location

Originator: Andrew Rice

The objective of this project is to implement a tabletop location service and some example applications. One example application would be a group of users put their mobile phones on a table and can then send photos or contact information to each other by flicking their finger over the screen in the direction of the recipient. The student will investigate and implement a number of possible methods for determining the relative position of the phone handsets.

On-mobile programming

Originator: Andrew Rice, Alan Blackwell, Luke Church

We think that programming using a mobile device is an important issue. On-mobile programming is important both in allowing users to match the huge range of functionality in these devices to their own needs and also for accommodating the huge numbers of people using mobile phones around the world without access to any conventional computing platform. This project will draw on existing HCI research into the design of more usable programming environments, in order to build a programming interface for Google Android handsets.

Wireless Sensor Networks

Originator: Ian Wassel

The wireless communication team is currently taking part in a couple of large wireless sensor network (WSN) projects; both are being conducted in collaboration with utility companies and both are concerned with infrastructure monitoring. The PIPES project is primarily investigating how to monitor the local water distribution network with the aim of improving leak detection and location while the WINES project is primarily interested in the monitoring of civil infrastructure such as tunnels and bridges. Various opportunities exist to undertake short projects within the context of the multidisciplinary research teams undertaking these projects. We will now briefly describe some potential areas for research projects.

One of our aims is to develop improved WSN planning, deployment and management tools that will be flexible enough to address various network architectures, e.g., star and mesh. They will also be extensible such that they can be applied to both large and small scale WSNs. Network optimization with constraints such as battery life maximization, installation cost minimization or total cost of ownership are of interest.

Propagation measurement and modelling provide the fundamental knowledge required in order to predict the performance of radio networks. Radio channel measurements are central to the determination of accurate empirical path loss models and for the characterisation of signal fading with the use of appropriate probability distribution functions. In addition, the use of Electromagnetic (EM) modelling to predict path loss and signal variability is also being investigated. The determination of novel techniques to reduce the computational burden of such models is of considerable interest.

The use of frequency or space (i.e., antenna) diversity techniques to improve WSN link performance has received little attention to date. Consequently, we would like to develop physical and media access control (MAC) layers that are able to harness the available diversity and so deliver major improvements in WSN link quality.