# .plan-26-41: Hello, is it Part II you're looking for?

*2026-10-11 — note*


Start of term is truly crazy around here, so I'll save longer form thoughts for later in the month when things calm down a little.

Most of my focus was on teaching and administration to prepare for the term.  I finished the Cambridge 1A [Foundations of Computer Science](https://anil.recoil.org/notes/focs) course notes as a [Forest](https://anil.recoil.org/notes/forester-teaching-notes), complete with live in-browser OCaml toplevels. These are now on the [course webpage](https://www.cl.cam.ac.uk/teaching/2627/FoundsCS/forest/index/) and ready for lectures next week. This may well be the last time this course (now [about three decades old](https://www.cl.cam.ac.uk/teaching/1998/IA50.html)) runs in its current form, so I'm a little nostalgic heading into delivering it\!

## CST Part II projects this year

There is a traditional crush of emails this week every year since the returning third year CST students all have to find projects and propose them in the first week of term. There's no 'clearing service' coordination here, so I usually get around forty requests for meetings. This year will see some particularly diverse and fun projects; I'm glad to see the spirit of computing exploration is still alive and kicking with our undergrads\!

- Anuraag Datta is designing Scour, a [language for finding patterns and rule violations in musical scores](https://anil.recoil.org/ideas/scour-music-patterns), supervised by Richard Sharp. This one wins the 'most original' award, as we'll be "debugging Bach"\!
- Eden Cheung is building an [io\_uring IO backend for Lean](https://anil.recoil.org/ideas/lean-io-uring-backend), taking advantage of the executable nature of code written in Lean4. This is really to explore how we might specify shared memory protocols more mechanically, as I believe they're the future of [OS interfaces](https://anil.recoil.org/notes/icfp25-post-posix).
- [Arya Golkari](https://github.com/Arya-Golkari) is porting [sPyTial](https://pypi.org/project/spytial-diagramming/) to OCaml as a [programmatic diagramming library](https://anil.recoil.org/ideas/spytial-ocaml-port) for ML-style data structures (including module signatures and functors). I must ping [Shriram Krishnamurthi](https://cs.brown.edu/~sk/) about this to get the latest developments on their end\!
- Rohan Wadhawan is writing a [compiler from OCaml to GLSL and WGSL shaders](https://anil.recoil.org/ideas/ocaml-to-shaders), supervised by [Patrick Ferris](https://patrick.sirref.org).
- Boris Hall is building an OCaml eDSL and runtime for [incremental computation with traceable data types](https://anil.recoil.org/ideas/incremental-traceable-edsl), also supervised by [Patrick Ferris](https://patrick.sirref.org).
- Matt Occleshaw is writing an [embedded OCaml DSL for OpenStreetMap](https://anil.recoil.org/ideas/ocaml-osm-dsl) whose queries can separate well known results from probable ones, also supervised by [Patrick Ferris](https://patrick.sirref.org). This is a good example of layering a language over a [folksonomy](https://en.wikipedia.org/wiki/Folksonomy) that has somewhat shifting semantics as the users decide where to steer it.
- Ethan Smith is building an [omniscient debugger for beginner Python programmers](https://anil.recoil.org/ideas/omniscient-debugger-beginners), supervised by Laurie Gale. We break the OCaml monopoly with some micro-Python here\!
- Minkyum Kim is building an [inverted spatial index for Tessera embedding search](https://anil.recoil.org/ideas/tessera-inverted-spatial-index), supervised by [Sadiq Jaffer](https://toao.com). We're aiming for sub-second searches over global embeddings on a single GPU, so there's some optimisation to do here.
- Finley Stirk is measuring and handling [GPS uncertainty in GBIF point labels for Tessera](https://anil.recoil.org/ideas/tessera-gbif-uncertainty), supervised by [Michael Dales](https://mynameismwd.org) and [Aneesh Naik](https://aneeshnaik.github.io/). GBIF is full of 'elephants in the ocean' due to the GPS uncertainty inherent in any observations, so this will hopefully greatly improve our habitat mapping efforts.
- Soham Shah is continuing work on [autoscaling geospatial computation with Python and Yirgacheffe](https://anil.recoil.org/ideas/autoscaling-geospatial-yirgacheffe), supervised by [Michael Dales](https://mynameismwd.org), to make it easier for ecologists to run global-scale analyses without becoming systems experts.

Next week is all about responding to the MPhil students and Part IIIs for their (longer form) projects. Fun times\!

## Back to the Cambridge community

We had the annual [Discover the Conservation Research
Institute](https://www.conservation.cam.ac.uk) event, with a completely packed
room of new faces and familiar ones. Absolutely delightful atmosphere all
around.

<figure class="image-center"><img src="/images/w41-photos.webp" alt="A packed Discover CRI!" title="A packed Discover CRI!" loading="lazy" srcset="/images/w41-photos.768.webp 768w, /images/w41-photos.640.webp 640w, /images/w41-photos.480.webp 480w, /images/w41-photos.3840.webp 3840w, /images/w41-photos.320.webp 320w, /images/w41-photos.2560.webp 2560w, /images/w41-photos.1920.webp 1920w, /images/w41-photos.1600.webp 1600w, /images/w41-photos.1440.webp 1440w, /images/w41-photos.1280.webp 1280w, /images/w41-photos.1024.webp 1024w"><figcaption>A packed Discover CRI!</figcaption></figure>

This was then followed by the usual three-minute group pitches by everyone, so
I grabbed a couple of candid camera shots.

<figure class="image-center"><img src="/images/w41-photos-2.webp" alt="Andrew Balmford advertises the upcoming Student Conference in Conservation Science" title="Andrew Balmford advertises the upcoming Student Conference in Conservation Science" loading="lazy" srcset="/images/w41-photos-2.768.webp 768w, /images/w41-photos-2.640.webp 640w, /images/w41-photos-2.480.webp 480w, /images/w41-photos-2.320.webp 320w, /images/w41-photos-2.2560.webp 2560w, /images/w41-photos-2.1920.webp 1920w, /images/w41-photos-2.1600.webp 1600w, /images/w41-photos-2.1440.webp 1440w, /images/w41-photos-2.1280.webp 1280w, /images/w41-photos-2.1024.webp 1024w"><figcaption>Andrew Balmford advertises the upcoming Student Conference in Conservation Science</figcaption></figure>
<figure class="image-center"><img src="/images/w41-photos-3.webp" alt="David Coomes explains the Centre for Landscape Regeneration" title="David Coomes explains the Centre for Landscape Regeneration" loading="lazy" srcset="/images/w41-photos-3.768.webp 768w, /images/w41-photos-3.640.webp 640w, /images/w41-photos-3.480.webp 480w, /images/w41-photos-3.3840.webp 3840w, /images/w41-photos-3.320.webp 320w, /images/w41-photos-3.2560.webp 2560w, /images/w41-photos-3.1920.webp 1920w, /images/w41-photos-3.1600.webp 1600w, /images/w41-photos-3.1440.webp 1440w, /images/w41-photos-3.1280.webp 1280w, /images/w41-photos-3.1024.webp 1024w"><figcaption>David Coomes explains the Centre for Landscape Regeneration</figcaption></figure>

I also had the pleasure of the matriculation dinner for the Pembroke College undergraduates, welcoming our four new arrivals with the traditional selfie. This was followed by a day of Director of Studies meetings with the full cohort to make sure all their projects and supervisions were in order.

<figure class="image-center"><img src="/images/w41-photos-4.webp" alt="Welcome Pembroke freshers!" title="Welcome Pembroke freshers!" loading="lazy" srcset="/images/w41-photos-4.768.webp 768w, /images/w41-photos-4.640.webp 640w, /images/w41-photos-4.480.webp 480w, /images/w41-photos-4.3840.webp 3840w, /images/w41-photos-4.320.webp 320w, /images/w41-photos-4.2560.webp 2560w, /images/w41-photos-4.1920.webp 1920w, /images/w41-photos-4.1600.webp 1600w, /images/w41-photos-4.1440.webp 1440w, /images/w41-photos-4.1280.webp 1280w, /images/w41-photos-4.1024.webp 1024w"><figcaption>Welcome Pembroke freshers!</figcaption></figure>

And after that, it was over to the Computer Science department for our faculty meetings, which I am now attending again as sabbatical is over\!

<figure class="image-center"><img src="/images/w41-photos-5.webp" alt="The Computer Lab faculty assembles" title="The Computer Lab faculty assembles" loading="lazy" srcset="/images/w41-photos-5.768.webp 768w, /images/w41-photos-5.640.webp 640w, /images/w41-photos-5.480.webp 480w, /images/w41-photos-5.3840.webp 3840w, /images/w41-photos-5.320.webp 320w, /images/w41-photos-5.2560.webp 2560w, /images/w41-photos-5.1920.webp 1920w, /images/w41-photos-5.1600.webp 1600w, /images/w41-photos-5.1440.webp 1440w, /images/w41-photos-5.1280.webp 1280w, /images/w41-photos-5.1024.webp 1024w"><figcaption>The Computer Lab faculty assembles</figcaption></figure>

## OCaml's module language

I also snatched a few minutes to jot down my thoughts on [why OCaml's module language is a great fit for agentic programming](https://anil.recoil.org/notes/ocaml-modules-agentic). This
is really just an explainer of the interface/implementation split that OCaml
has supported for 25+ years, but the post was quite widely read by a new
audience who are now using coding assistants and so switching between languages
at a rapid pace.

## References

1. Madhavapeddy (2025). Foundations of Computer Science. <https://doi.org/10.59350/qms3q-ymn65>
2. Madhavapeddy (2026). OCaml's module language is the perfect fit for agentic programming. <https://doi.org/10.59350/g6hbj-qmc76>
3. Madhavapeddy (2025). It's time to go post-POSIX at ICFP/SPLASH 2025. <https://doi.org/10.59350/mch1m-8a030>
4. Madhavapeddy (2026). Using Forester to turn Foundations of CS into interactive evergreen lectures. <https://doi.org/10.59350/sjcvd-hb857>

Synopsis: The Foundations of Computer Science notes are now done as a Forest with live OCaml toplevels, and Part II projects sorted.
Words: 761

Discussion:
- Bluesky: <https://bsky.app/profile/anil.recoil.org/post/3mxqvngslmk2v>
- LinkedIn: <https://www.linkedin.com/feed/update/urn:li:activity:7515731347793924097/>
- Mastodon: <https://amok.recoil.org/@avsm/117433303776563746>
- Twitter: <https://x.com/avsm/status/2109965728610754652>

## Related

- [OCaml's module language is the perfect fit for agentic programming](https://anil.recoil.org/notes/ocaml-modules-agentic) (note, 2026-10-09)
  Write interfaces first, statically type check the design, then hand each module to an agent one at a time. OCaml's module language makes this a natural workflow for future formal methods too.
- [Incremental computation using traceable data types in an OCaml eDSL](https://anil.recoil.org/ideas/incremental-traceable-edsl) (idea, 2026-10-01)
  Ongoing · Part II
- [An embedded DSL for OpenStreetMap](https://anil.recoil.org/ideas/ocaml-osm-dsl) (idea, 2026-10-01)
  Ongoing · Part II
- [A compiler from OCaml to graphics shader languages](https://anil.recoil.org/ideas/ocaml-to-shaders) (idea, 2026-10-01)
  Ongoing · Part II
- [Omniscient Debugger to Support Beginner Programmers](https://anil.recoil.org/ideas/omniscient-debugger-beginners) (idea, 2026-10-01)
  Ongoing · Part II
- [A Language for Finding Patterns and Rule Violations in Musical Scores](https://anil.recoil.org/ideas/scour-music-patterns) (idea, 2026-10-01)
  Ongoing · Part II
- [Handling GPS uncertainty in point labels for Tessera](https://anil.recoil.org/ideas/tessera-gbif-uncertainty) (idea, 2026-10-01)
  Ongoing · Part II
- [An inverted spatial index for global Tessera embeddings search](https://anil.recoil.org/ideas/tessera-inverted-spatial-index) (idea, 2026-10-01)
  Ongoing · Part II
- [Using Forester to turn Foundations of CS into interactive evergreen lectures](https://anil.recoil.org/notes/forester-teaching-notes) (note, 2026-08-16)
  Porting the FoCS lecture notes to Forester, including transclusions and stable section URLs, and a live OCaml toplevel compiled into the browser.
- [An io_uring IO implementation for Lean](https://anil.recoil.org/ideas/lean-io-uring-backend) (idea, 2026-04-01)
  Ongoing · Part II
- [A programmatic diagramming library for OCaml](https://anil.recoil.org/ideas/spytial-ocaml-port) (idea, 2026-04-01)
  Ongoing · Part II
- [It's time to go post-POSIX at ICFP/SPLASH 2025](https://anil.recoil.org/notes/icfp25-post-posix) (note, 2025-10-08)
  VMIL keynote arguing for post-POSIX shared memory interfaces like io_uring in language runtimes for high-performance concurrent computing.
- [Autoscaling geospatial computation with Python and Yirgacheffe](https://anil.recoil.org/ideas/autoscaling-geospatial-yirgacheffe) (idea, 2025-04-01)
  Ongoing
- [Foundations of Computer Science](https://anil.recoil.org/notes/focs) (note, 2025-01-03)
  Resources for teaching Foundations of Computer Science with OCaml and Jupyter notebooks.

---
Canonical: https://anil.recoil.org/notes/2026w41
Type: note
License: CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>
Tags: teaching, ocaml, tessera, eio
