Overview

58 workshops over about 15 monthsWe bring together experienced engineers from different industries and work through the modern deep learning and agentic engineering stack. You come in one afternoon a week, for 58 workshops. With breaks, that takes about 15 months. The programme runs in three terms, with breaks at Christmas, in the spring and at the end of the summer, and the week numbers count teaching weeks only. If you want to move faster, you can finish after 12 months.
The work is meant to be used. Four of the seven modules are projects, and if your employer has a problem that fits, you work on that. In the last module you build an AI system for your employer and put it into service.
The first thing you write is a coding agent, from scratch. We give you a server, and you turn it into a Kubernetes cluster and serve the models you train from it for the rest of the programme. You build retrieval with hybrid search, reranking, and an agent that searches for itself. Later you build a transformer from the ground up in PyTorch. In Frontier ML each afternoon goes to one paper, read in the room and reproduced at small scale.
We provide a server, GPU access, and OpenAI, Claude and OpenRouter credits for the workshops. Practitioners lead them, and speakers come in from organisations such as Google DeepMind.
Things are moving very fast, and we are doing our best to keep up. Where we see opportunities, we’ll improve things, so you should treat this curriculum as indicative rather than definitive.
Tools and libraries
Python
NumPy
scikit-learn
XGBoost
PyTorch
Hugging Face
Claude Code
MCP
MLflow
FastAPI
Postgres
Docker
KubernetesProduction ML

Weeks 11 to 16 · six workshopsYou start with raw data and end with a model answering live requests. The aim is to do a machine learning engineer’s job once, end to end.
You curate the data, then fit a linear regression baseline, gradient-boosted trees and a small neural network, score all three on the same held-out split, and log every run to MLflow.
You serve the model behind FastAPI on your own Kubernetes cluster, then change it while it is running, with a second version on 10% of the traffic and a third as a shadow on a copy of every request. In the last workshop you look at data drift, and at whether to retrain the model or retire it.
What you will build
- A linear regression baseline, gradient-boosted trees and a small neural network, scored on the same held-out split
- An MLflow run log, with one model promoted to the registry
- The model served behind FastAPI on your own Kubernetes cluster
- A second version on 10% of the traffic, and a third running as a shadow
- Drift detection on the live data, and a decision to retrain or retire
Tools and libraries
Python
scikit-learn
XGBoost
PyTorch
MLflow
FastAPI
Docker
KubernetesRetrieval and context engineering

Weeks 18 to 24 · seven workshopsContext engineering is the job of getting the right data in front of the model. Retrieval is how you do that when the corpus is too large to load.
You start with RAG as it was built in 2023. Documents are chunked, embedded and stored in pgvector. A query is embedded, the nearest chunks come back, and they go into the prompt. You build it first on a hosted embedding API, then on a local model, then strip it down to cosine search in NumPy. You write the test questions before any of that, part by hand and part generated, check the generated ones against human judgement, and score every change on precision, recall and mean reciprocal rank.
Then you move on to what the field does now. A BM25 index sits beside the dense one and the two are fused by reciprocal rank fusion. A cross-encoder reranks the shortlist before it reaches the model, and you measure what that costs in latency. After that the model takes over retrieval. An agent with search tools decides what to fetch, judges what came back and fetches again, and you score it against loading the whole corpus into the window. The last taught afternoon is LLM operations. You route requests between a cheap model and a reasoning model, cache what repeats, version the prompts, track what every call costs and add a fallback for when a provider fails.
The module ends with a group project, a retrieval system over a set of documents, ideally your employer’s.
What you will build
- A dense retriever built three ways, from hosted embeddings in pgvector to a local embedding model to cosine search in plain NumPy
- A BM25 index over the same documents, fused with the dense results by reciprocal rank fusion
- A cross-encoder reranker over the shortlist, and a measurement of the latency it adds
- A labelled query set written before the system, part hand-written and part synthetic, and a harness that reports precision, recall and MRR after every change
- An agent that searches the corpus itself, scored against loading everything into the window
- A routing layer between a cheap model and a reasoning model, with caching, prompt versioning, cost tracking and a fallback
- A retrieval system over a set of documents, ideally your employer’s, built as a team
Tools and libraries
Python
NumPy
Hugging Face
PostgresStandalone workshops

Nine workshops between the modulesWeek 1Programme launch
The first afternoon starts with lunch. You meet the cohort, hear what the next 15 months hold, and set up your tools.
Week 9Evals and error analysis
You read 100 traces from the agent you built and sort its failures by type. You then write an automated judge and measure how often it agrees with you.
Week 10Your own cluster
We give you a server and you turn it into a single-node Kubernetes cluster with DNS, ingress and TLS certificates. It is yours for the rest of the programme, and you serve the models you train later from it.
Week 17Red-teaming agents
An agent is open to attack when it holds private data, reads untrusted text and can send messages out. You attack each other’s agents by prompt injection, jailbreaking and data extraction, then close the holes in your own with input validation and output filtering.
Week 25Maths refresher
We revise the linear algebra, calculus and probability that the next module relies on.
Week 32A voice agent
You build a voice agent, either on a real-time speech API or as a pipeline of speech recognition, a language model and speech synthesis.
Week 39Security and responsible AI
Most of a machine learning system is other people’s models, datasets and libraries. You look at what can be hidden in them, and you test a model for bias before you release it.
Week 40A GPU kernel
You write a fused softmax kernel in Triton and profile it against the PyTorch version, then read the FlashAttention kernel line by line. Memory bandwidth limits these kernels more than arithmetic does.
Week 48AI safety and risk
More capable systems bring new risks, including misuse and agents that act with too much autonomy. You read how labs evaluate a model for dangerous capabilities, and how they decide whether it is safe to release.