Time Description
9:30 - 10:30 AI for Software Engineering - Lucia Windsor
Arfon Smith, Schmidt Sciences

This two-part session explores how generative AI is transforming software engineering. In the first hour we'll cover key capabilities and use cases – code generation, test writing, documentation, code review, and integration into development environments – along with practical tips and emerging best practices. In a follow-up 90-minute hands-on session, attendees will experiment with AI tools.  gaining experience with prompt design, tool behaviors, and how to integrate these systems effectively and critically into real workflows.

Pre-requisites:
Have Cursor installed on a laptop prior to the session -  https://www.cursor.com
10:30 - 11:00 Break (tea and coffee)
11:00 - 12:30 Differentiable Programming - Lucia Windsor
Joe Wallwork, ICCS
Niccolo Zanotti, ICCS

Derivatives are at the heart of scientific programming. From the Jacobian matrices used to solve nonlinear systems to the gradient vectors used for optimisation methods, from the backpropagation operation in machine learning to the data assimilation methods used in weather forecasting, all of these techniques rely on derivative information. Differentiable programming (also known as automatic/algorithmic differentiation (AD)) provides a suite of tools for users to compute derivatives of quantities in their code without any manual encoding. In Session 1, we will learn about the history and mathematical background of differentiable programming and investigate “forward mode” using the Tapenade AD tool. In Session 2, we will learn about adjoint methods and “reverse mode”, investigate deploying reverse mode in PyTorch, Torch, or FTorch (i.e., Python, C++, or Fortran, as preferred), and see some demonstrations of more advanced usage.

Pre-requisites:
Undergraduate level knowledge of linear algebra and calculus.
Basic knowledge of C or Fortran.
Either download and install the Tapenade AD tool (https://tapenade.gitlabpages.inria.fr/tapenade/) or just check you can access the web interface (http://tapenade.inria.fr:8080/tapenade/index.jsp). 
12:30 - 13:30 Lunch (Newnham College Garden Marquee)
13:30 - 15:00 Track 1 AI for Software Engineering (Practical Session) - Lucia Windsor
Arfon Smith, Schmidt Sciences

Following on from Part 1
13:30 - 15:00 Track 2 Introduction to HPC (Part 2) - Sidgwick Hall
Chris Edsall, ICCS

Following on from Part 1
15:00 - 15:30 Break (tea and coffee)
15:30 - 17:00 Track 1 RSE Skills (Part 2) - Lucia Windsor
Jack Atkinson, ICCS
Marion Weinzierl, ICCS

Following on from Part 1
15:30 - 17:00 Track 2 Debugging - Sidgwick Hall
Tom Meltzer, ICCS

This course will focus on command line tools such as gdb, lldb and mdb to debug scientific codes. We will consider why we use debuggers in the first place. What benefits they offer versus printf(). We will then focus on some common errors and how we can quickly get to the root cause using debuggers. We will also cover some advanced topics such as detecting memory-related bugs, scripting debug sessions and debugging MPI applications.
All of the debuggers are free and open-source and run on HPC systems.
Lessons learnt in this session similarly apply to integrated debuggers and graphical debuggers, such as VSCode & Linaro DDT, but we will not cover these in the workshop.

Pre-requisites:
Unix command line
Experience with a compiled language (C/C++/Fortran or Rust)
No prior knowledge of debuggers is assumed
(optional) Experience with MPI programs
17:00 - 19:30 Poster Session with wine and cheese  - Lucia Windsor