Programming languages research projects
Idris
Idris is a general purpose functional programming language with full dependent types, building on state-of-the-art techniques in programming language research. Dependent types allow types to be predicated on any value – in this way, required properties of a program can be captured in the type system, and verified by a type checker. This includes functional properties (i.e. does the program give the correct answer) and extra-functional properties (i.e. does the program run within specified resource constraints). Idris aims to bring type-based program verification techniques to programming practitioners while supporting efficient systems programming via an optimising compiler and interaction with external libraries.
Contact: Dr Edwin Brady
TeamPlay
TeamPlay is a three-year research project funded by the EU Horizon 2020 research and innovation programme.
The TeamPlay project aims to develop new, formally-motivated, techniques that will allow execution time, energy usage, security, and other important non-functional properties of parallel software to be treated effectively, and as first- class citizens. We will build this into a toolbox for developing highly parallel software for low-energy systems, as required by the internet of things, cyber-physical systems etc.
The TeamPlay approach will allow programs to reflect directly on their own time, energy consumption, security, etc., as well as enabling the developer to reason about both the functional and the non-functional properties of their software at the source code level.
Our success will ensure significant progress on a pressing problem of major industrial importance: how to effectively manage energy consumption for parallel systems while maintaining the right balance with other important software metrics, including time, security etc.
The project brings together leading industrial and academic experts in parallelism, energy modelling/transparency, worst-case execution time analysis, non-functional property analysis, compilation, security, and task coordination.
Results will be evaluated using industrial use cases taken from the computer vision, satellites, flying drones, medical and cyber security domains.
Contact: Dr Christopher Brown
Serums
The Serums Project is an EU Horizon 2020 research project which deals with security and privacy of future-generation healthcare systems, putting patients at the centre of future healthcare provision, enhancing their personal care and maximising the quality of treatment they receive.
In order to achieve high quality healthcare provision, it is increasingly important to collect highly confidential and personal medical data from a variety of sources, including personal medical devices and to share this through a variety of means, including public networks and other systems whose security cannot be implicitly trusted. Patients rightly expect full privacy, except where permission has been explicitly given, but they equally expect to be provided with the best possible medical treatment. Integrating home-based healthcare into a holistic treatment plan is cost effective, reduces travel-associated risks and costs, and increases the quality of healthcare provision, by allowing the incorporation of more frequent home-, work- and environment- based monitoring and testing into medical diagnostics. There is thus a strong and urgent demand to deliver better, more efficient and more effective multi-site and sometimes even multi-national healthcare solutions that can achieve excellent patient-centric healthcare provision, while also complying with increasingly strict regulations on the use and sharing of patient data.
Contact: Prof Juliana Bowles, Dr Christopher Brown.
Paraformance
ParaFormance allows C/C++ developers on x86 and ARM to expose, diagnose and introduce multi-core code into their applications. Discover the multi-core opportunities by running our hot spot discovery, refactor your application to introduce openMP and TBB calls automatically, and check the parallelised code for thread safety issues, such as race conditions, deadlocks, variable collisions and more.
Contact: Dr Christopher Brown
Discovery
Computing pervades our lives, impacting our health, work, entertainment and social interaction. Over recent years, the technology inside the devices providing these services has undergone a radical change: where once, processing was undertaken by relatively homogeneous “sequential” devices, in which essentially one thing happened at a time, the new systems compose a range of specialized devices, some targeting specific problem sub domains, and almost all exhibiting considerable “parallelism”, where many things can happen at the same time. This is true on all scales, from the internals of a mobile phone, to the massive data centres which serve web applications such as Google. This poses a substantial challenge for the software industry: writing correct and efficient programs for heterogeneous, highly parallel systems is much harder than for current technologies and most developers lack the skills and training to write safe and efficient code. Faced with this difficulty, software developers will often avoid writing parallel code completely, or else will use inappropriate, non-scalable and error-prone approaches based on explicit threads of program execution. Given the hardware trend towards increasingly complex, increasing parallel (manycore) systems, this is an inherently short-term strategy that is doomed to failure,
Our project addresses this issue. Our key insight is that humans in general, are very good at using patterns to understand, predict and act in the real world. This insight translates into the world of software engineering in general, and parallel heterogeneous programming in particular. Our work will help programmers to recognize patterns in pre-existing and new applications, and to transform these pattern occurrences into forms which allow them to be exploited, adapted and run effectively on the new hardware platforms. The systems we develop will work in partnership with software developers, reducing the complexity of the task, automating and semi-automating the development task. The result will help the industry to develop new applications, and to update existing applications, with less effort, fewer errors and better resilience as the underlying technology continues to evolve.
Contact: Dr Susmit Sarkar, Dr Christopher Brown