ICCS logo

GitHub · POPL 2022 paper · POPL talk

Fluid: data-linked visualisations

Project suggestions for Cambridge 2024-25 Part II Projects

If you are a University of Cambridge Computer Science student entering Part II in October 2024, you will need to have identified a potential project and an appropriate supervisor by the first day of Michaelmas term. The Fluid project is an exciting opportunity to work on a new programming language designed to make climate science more open, intelligible and accessible. If this sounds interesting, please contact Roly Perera, Computer Laboratory, University of Cambridge.

Project description

Charts and other visual summaries, curated by journalists and scientists from real-world data and simulations, are how we understand our changing world and the anthopogenic sources of that change. But interpreting these visual outputs is a challenge, even for experts with access to the source code and data. Fluid is a new “transparent” programming language, being developed at the Institute of Computing for Climate Science in Cambridge, that can be used to create charts and figures that are linked to data so a user can interactively discover what visual elements actually represent. This is an exciting opportunity to work on a new programming language designed to make climate science more open, intelligible and accessible.

Fluid works by incorporating a bidirectional dynamic dependency analysis into its runtime, allowing it to track dependencies as outputs (such as charts and tables) are computed from data. It uses this information to automatically enrich rendered output with interactions that allow a reader to explore the relationship to data directly through the artefact, by selecting visual features of interest. Fluid uses so-called “program slicing” techniques based on Galois connections, a neat mathematical abstraction which characterises exactly the relationship between sets of inputs and sets of outputs which depend on them.

Your project could go in a number of directions, depending on your interests. A programming languages project would extend Fluid into a literate programming tool, by adding Markdown support and the ability to embed computational content via a Lisp-style backquote mechanism. A more mathematical project might add multidimensional arrays to the language, along with various array operations inspired by linear algebra and an extension of the dependency analysis to these new operations. A project focused more around science communication would use Fluid to adapt a piece of real-world climate science into a “long-form” essay or interactive explanation (see distill.pub for some examples) intended for a non-specialist audience.

Whatever form your project takes, we would aim for your work to be incorporated into our research software codebase and project outputs, and so would form a genuine contribution to an exciting new direction in programming languages. You will get to present your work to researchers and data scientists at the Institute of Computing for Climate Science and The Alan Turing Institute, and work with PhD students at Cambridge and Bristol. A strong background in functional programming, maths and/or science is a must, and you can expect to gain experience in programming languages research, data analysis and data visualisation.