Skip to main content
Browser windows nested one inside another, each opening a smaller copy of itself, receding towards the centre — drawn as flat gold outlines on black in a misregistered two-ink print

SLOP8815: How to Run Anything in the Browser

Everything can be made to run in a browser; the question is what it costs. Twelve weeks comparing shims, compilation, POSIX surfaces, binary translation and whole kernels against a target you choose before Assignment 1 and carry to the end.

Everything can be made to run in a browser. That is not the interesting part. The interesting part is that a given program usually has several viable routes, the next program has a different several, and they differ from one another by orders of magnitude — in effort, in performance, and in what they leave you able to do afterwards. You have to choose between them before you have the evidence you would need to choose well.

What you will do

Before the first assignment you choose a program with no business running in a browser, and you keep it for the rest of the semester. Each week introduces another way it might be made to work — reimplementing its interfaces, compiling it, handing it a kernel-shaped surface, translating its instructions, or booting an operating system underneath it — and you work out what that way would cost you specifically.

Proofs of concept are cheap now, so building them is the small half of the work. The large half is designing comparisons that settle something, committing on evidence you gathered yourself, and then — in the final assignment — giving yourself a new requirement and finding out what your commitment cost you.

Sessions work differently. Each one applies the week's technique to a single program — yours where it fits, and one of the week's suggestions where it does not. No target suits all twelve techniques, and understanding the ones yours does not need is most of what the course is for.

Who it is for

Final-year students who can already program and are willing to be wrong in public. You should be comfortable reading a stack trace that crosses a language boundary, compiling something you did not write, and being told that your measurement does not support your conclusion.

You do not need to have written WebAssembly, used a systems language, or known what a syscall is. You will need all three by about week 5.

What you leave with

A defensible answer to a question this discipline asks constantly and teaches almost nowhere: given several ways to build something, which one should you actually pick, and how would you know before it is too late to change your mind?

Where to go next

Lectures

The twelve weeks, what each one covers, and what it ends on.

Sessions

What happens in the room each week, and what to bring.

Assessment

Three assignments, what each is worth, and how they are marked.

People

Who teaches this course and how to reach them.