# Foundations of Computer Science

*2025-01-03 — note*


Here are the various repos used to create the interactive [teaching](https://anil.recoil.org/notes/teaching) environment
we use for 1A Foundations of Computer Science in Cambridge. It may be useful to
other professors who are using OCaml in their courses.


- <https://github.com/avsm/teaching-fcs> is a private repo, but ping me if
  are teaching and I'll give you access (it has coursework answers in it).
  We use a Jupyter notebook, with the course written in Markdown using the
  [mdx](https://github.com/realworldocaml/mdx) OCaml parser which evaluates
  toplevel phrases through the compiler and promotes the output directly
  into the markdown.
- We then convert the Markdown into Jupyter format using a
  [fork of mdx](https://github.com/realworldocaml/mdx/pull/124), and then
  nbconvert it into LaTeX for the printed notes.
- A [JupyterLab](https://jupyter.org/install.html) installation with a
  [custom OCaml kernel](https://github.com/akabe/ocaml-jupyter) suffices
  for the live setup. Every student gets their own container on the server
  and one server is sufficient for a full class of ~125 students.

Ping me if you want to know more, and other people who have worked
on this with me are [Jeremy Yallop](https://www.cst.cam.ac.uk/people/jdy22), [David Allsopp](https://www.dra27.uk) and [Jon Ludlam](https://jon.recoil.org), with Jon
being the currently active additional lecturer on the course as of 2024/2025.
Synopsis: Resources for teaching Foundations of Computer Science with OCaml and Jupyter notebooks.
Words: 186
DOI: 10.59350/qms3q-ymn65

## Related

- [.plan-26-19: Ancient oaks, parliamentary evidence, and TESSERA in the City](https://anil.recoil.org/notes/2026w19) (note, 2026-05-10)
- [.plan-26-07: Storage, Lego, Echo, and the IUCN](https://anil.recoil.org/notes/2026w7) (note, 2026-02-15)
- [What I learnt at ICFP/SPLASH 2025 about OCaml, Hazel and FP](https://anil.recoil.org/notes/icfp25-what-i-learnt) (note, 2025-10-09)
- [About](https://anil.recoil.org/notes/index) (note, 2025-02-15)
- [Programming FPGAs using OCaml](https://anil.recoil.org/notes/fpgas-hardcaml) (note, 2025-02-07)
- [Teaching at Cambridge](https://anil.recoil.org/notes/teaching) (note, 2025-01-03)

---
Canonical: https://anil.recoil.org/notes/focs
Type: note
Tags: teaching, cambridge, computerlab, pembroke, compsci, ocaml
