Time Description
9:30 - 10:30 Practical Machine Learning with PyTorch (Part 1) - Lucia Windsor
Matt Archer, ICCS
Isaac Akanho, ICCS

The key learning objective from this workshop could be simply summarised as:
Provide the ability to develop ML models in PyTorch.
However, more specifically we aim to:
   - provide an understanding of the structure of a PyTorch model and ML pipeline,
   - introduce the different functionalities PyTorch might provide,
   - encourage good research software engineering (RSE) practice, and
   - exercise careful consideration and understanding of data used for training ML models.
With regards to specific ML content we cover:
   - using ML for both classification and regression,
   - artificial neural networks (ANNs) and convolutional neural networks (CNNs)
   - treatment of both tabular and image data.

Pre-requisites:
The materials can be found along with a detailed description of prerequisites here:  https://github.com/Cambridge-ICCS/practical-ml-with-pytorch
Important: On the day there will be two options to explore the material. To avoid any setup complications, choose to either:
   - Clone and install the repo locally ahead of time.
   - Be ready with a Google account to use Google Colab.
To get the most out of the session it would be helpful to review:
   - Python3 (numpy, pandas, matplotlib)
   - Maths (calculus, matrix algebra, regression)
   - Neural networks: See YouTube series by 3blue1brown, chapters 1-3. 
10:30 - 11:00 Break (tea and coffee)
11:00 - 12:30 Track 1 Differentiable Programming (Part 2) - Lucia Windsor
Joe Wallwork, ICCS
Niccolo Zanotti, ICCS

Following on from Part 1
11:00 - 12:30 Track 2 Observation System Simulation Experiences: how to use ML for optimal sampling strategy - Sidgwick Hall
Laura Cimoli, ICCS

The ocean is a major sink of anthropogenic carbon, overall contributing to the sequestration of about 30% of the cumulative atmospheric anthropogenic CO2. The direction and strength of the air-sea CO2 exchange depend on the difference in CO2 partial pressure between the atmosphere and the ocean. Observations of ocean surface CO2 partial pressure, hereafter pCO2, are sparse in time and space, leading to large uncertainty in future predictions of the carbon cycle.
How can we optimise pCO2 sampling strategies and collect observations where they are most needed? In this exercise, we will show you how ML approaches can be combined with ocean physical-biogeochemical models to design an observing system in the Atlantic Ocean that would optimally combine data streams from various platforms and contribute to reducing the bias in reconstructed surface ocean pCO2 fields and sea–air CO2 fluxes.

Pre-requisites:
Have a working Python 3 installation on their system
Ideally download the data in advance of the session: https://zenodo.org/records/12567970
Ideally clone the repository in advance of the session: https://github.com/lcimoli/OSSE_pCO2 
12:30 - 13:30 Lunch (Newnham College Dining Hall)
13:30 - 15:00 Track 1 Practical Machine Learning with PyTorch (Part 2) - Lucia Windsor
Matt Archer, ICCS
Isaac Akanho, ICCS

Following on from Part 1
13:30 - 15:00 Track 2 Intro to Julia - Sidgwick Hall
Adeleke Bankole, ICCS

Julia is a modern open source and free to use dynamic programming language well suited for numerical computing. It is as accessible as Python while still giving the speed, as fast as compile languages (for example, C/C++, Fortran). The session focuses on introductory aspects of the Julia language, standard mathematical libraries, the ecosystem, and its data analysis capabilities. We will demonstrate live examples with Pluto or Jupyter notebooks. This short course is directed at an audience who are interested in scientific numerical computing and who want to learn the basics of writing codes in Julia.

Pre-requisites:
Have a working latest Julia installation on their system.
Basic programming skills
15:00 - 15:30 Break (tea and coffee)
15:30 - 17:00 Group Excursion