Are you eager to jump-start your career in Programming Languages and do you want to contribute to the exciting new area of Differential and Probabilistic Programming? As a PhD candidate in the ERC project FoRECAST, you’ll work independently and in a collaborative, diverse team. This is a unique opportunity to contribute to the technological foundations for tomorrow’s machine learning.
Your jobIn the ERC project FoRECAST, we aim to develop theory (e.g., new probabilistic and differential inference algorithms as well as proofs of their correctness and efficiency) and systems (e.g., high performance, functional array programming DSLs) to tackle challenging probabilistic and differentiable programming applications (e.g., experimental design, machine learning for science). We do so by bringing together a diverse team of PhD candidates who will focus on three key areas:
- Probabilistic and differentiable algorithms for machine learning;
- Programming language implementation for high performance computing;
- Programming language semantics and foundations.
Your focus will be on area 2, with your research paving the way to a PhD within your appointment.
Your researchIn this role, your research will develop the foundations and push the boundaries of the field of differential and probabilistic programming. This exciting new field of research combines knowledge from the programming languages, machine learning, and scientific computing communities. Depending on your background and interests, your project could involve:
- developing new differential and probabilistic programming techniques (e.g., techniques for differentiating effectful programs such as gradient estimation of probabilistic programs, implicit function differentiation, compositional Bayesian inference techniques);
- analyzing what is required (e.g., choice of data structures, static analyses and compiler optimizations, parallelism and concurrency) to turn these new theoretical developments into performant implementations;
- building state-of-the-art implementations of these new techniques (e.g., by leveraging data-parallel functional array programming techniques);
- giving mathematical proofs of their correctness and efficiency, as well as robust evaluations of their performance;
- applying them to solve real-world problems (e.g., gradient estimation challenges in experimental design and reinforcement learning).
You’ll have plenty of space to shape the project to your particular interests and strengths.
Your teamYour main supervisor will be
Matthijs Vákár. You’ll also be supported by secondary supervisors who are experts in programming language implementation (Tom Smeding and Gabriele Keller) and machine learning (e.g., Bob Carpenter) if appropriate for your interests. Beyond membership of the FoRECAST team, you’ll join the Software Technology group led by Gabriele Keller. As our research group contains core members of the popular Accelerate and Stan DSLs for machine learning and scientific computing, newly developed techniques could quickly have a large impact and reach a large audience of end users. Beyond Utrecht University, we anticipate collaborating with international partners including the Center for Computational Mathematics at the Flatiron Institute in New York, the Department of Computer Science at the University of Oxford, the Amsterdam Machine Learning Lab, and the XLA and JAX teams at Google.
Your teachingTeaching will be a small but valuable part of your role within the Department of Information and Computing Sciences. Depending on your interests and our departmental needs, you will contribute to teaching activities of courses in our BSc and MSc programmes. Activities may include conducting tutorials, student supervision and public outreach. This experience will help you develop teaching skills and explore whether you see a future in academia.