University of Cambridge

Job Opportunities


Software Engineer

Fixed-term: The funds for this post are available for 24 months.

Applications are invited for a software engineer to work on dynamic binary translation and compilation.

Our research group focuses on a number of approaches to realise performance gains from program parallelisation. We are developing schemes to identify, realise and exploit multiple forms of parallelism directly from application binaries, using a dynamic binary translator (DBT). Using existing tools, such as DynamoRIO ( and Mambo (, we will implement optimisations and transformations to increase the performance of the underlying DBT, specialisation and extensions to meet our own project's needs, and the machinery to exploit parallelism on top. In addition, there may be scope for implementing research within a compiler infrastructure, such as LLVM (

The successful candidate will aid with software development in these directions. Through profiling and analysis of our group's needs, he or she will implement features and optimisations that will improve the performance and utility of our software tools. The aim is to open-source all software during the course of the project.

Our group is a growing team of PostDocs and PhD students investigating performance, reliability and energy-efficiency in future many-core systems. The position is within the Computer Architecture Research Group at the University of Cambridge Computer Laboratory in a joint project with Cancer Research UK and ARM. Collaboration with researchers at other universities and industry around the world is encouraged and there are good links between the group and local companies.

We seek candidates with a background in Computer Science and Software Engineering, with an interest in compilers and binary translation.

Applicants should have experience in writing, optimising or improving complex software; having performed this within a DBT / virtual machine environment would be preferable but not essential. Knowledge of computer architecture, memory systems, parallel programming or extracting parallelism would be beneficial.

To apply online for this vacancy, please click on the 'Apply' button below. This will route you to the University's Web Recruitment System, where you will need to register an account (if you have not already) and log in before completing the online application form.

Please ensure you upload your Curriculum Vitae (CV) and a covering letter. Applicants should provide evidence of relevant work, where possible; a short summary of software engineering contributions and links to open-source projects (where relevant) would be appreciated. If you upload any additional documents which have not been requested, we will not be able to consider these as part of your application.

Please quote reference NR12224 on your application and in any correspondence about this vacancy.

The University values diversity and is committed to equality of opportunity.

The University has a responsibility to ensure that all employees are eligible to live and work in the UK.

Apply online