# Site ## Pages - [Page not found](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/404/): That page doesn't exist, or it has moved since you last looked - [Assessment](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/assessments/): Three assignments on one target: reduce the options, commit on evidence, then find out what the commitment cost. - [Assignment 1: The reduction](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/assessments/assignment-1/): Choose a target, establish what it actually requires, and reduce the option space to the ones worth attempting — with reasons - [Assignment 2: The commitment](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/assessments/assignment-2/): Build enough of at least two approaches to measure them, then commit to one and show what closed the decision - [Assignment 3: The re-opening](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/assessments/assignment-3/): Give yourself a new requirement, work out what it does to the approach you committed to, and grade your own Assignment 1 against what you now know - [Lectures](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/): Twelve weeks, each introducing one more way to run something where it does not belong — and what that way costs. - [Running code in the browser](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-01/): Thirty years of running foreign code in a web page, almost all of it the same idea — and the option space that replaced it - [Characterising a target](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-02/): Everything is possible, so the interesting question is what a program actually requires — and how those requirements reduce the set worth attempting - [Shims, polyfills and reimplementation](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-03/): The cheapest option in the course — implement the interface instead of the machine — and the three very different things people mean by it - [Compiling for the web](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-04/): Pure computation compiles and always did. Everything that makes a program useful is an interface, and interfaces are what break a port - [The web is not POSIX-compatible (i)](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-05/): What a kernel-shaped surface has to provide, how much of it the web standards deliver, and what happens when a call is present but wrong - [The web is not POSIX-compatible (ii)](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-06/): A browser is not a multiprocessing operating system, and a runtime that is correct on your desktop will deadlock in a tab - [The filesystem](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-07/): Giving a guest a filesystem is easy. Giving two runtimes the same filesystem is where the design is, and where five good designs went to die - [The network](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-08/): There are no sockets, so you build one out of message passing — and then discover the wall was never TCP - [Running "native" binaries](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-09/): Take the source requirement away entirely — and find that most of the ways to do it are not emulation at all - [Running a full OS kernel](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-10/): Stop faking the kernel and bring one. Two quite different projects hide under that sentence, and only one of them is emulating a machine - [Graphics](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-11/): Of everything an approach quietly decides on your behalf, the rendering path is the least negotiable - [Committing, and changing your mind](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/lectures/week-12/): How to commit on evidence, and why changing your mind here is not an iteration — it is discarding an execution environment - [People](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/people/): Who teaches the course, and how to reach them. - [Corey Weir](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/people/corey-weir/): Convenor and lecturer. Has spent an unreasonable share of their career making software run where it was not invited - [Nadia Osei](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/people/nadia-osei/): Assistant lecturer. Will ask what your clever idea costs to keep running - [Tobias Lin](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/people/tobias-lin/): Tutor and PhD candidate. Will find the paper that already did the thing you just invented - [Policies and support](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/policies/): Extensions, academic integrity, the use of coding agents, and how to get help before it is too late to matter. - [Four things that should not work](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/01-four-things-that-should-not-work/): Run a PC, a kernel and two games in a browser tab, and form an opinion about what each one costs before anybody tells you - [What does it need?](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/02-what-does-it-need/): Take a program apart from the outside and write down what it requires, using evidence rather than assumption - [The shim that almost works](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/03-the-shim-that-almost-works/): Run real programs against a fake runtime and find the exact line where impersonation stops paying - [Which interface stops you first?](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/04-which-interface-stops-you/): Compile several things that have no business compiling, and find the pattern in how they fail - [What does it ask the kernel for?](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/05-what-does-it-ask-the-kernel/): Take the syscall inventory of a real program and decide which surface could actually host it - [Tested in Node, broken in a tab](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/06-tested-in-node-broken-in-a-tab/): Reproduce a defect that only exists in a browser, and work out what your test environment was quietly forgiving - [What does it need from a filesystem?](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/07-what-does-it-need-from-a-filesystem/): Establish what your program actually requires of a filesystem, then break a filesystem that looks correct - [What does it talk to?](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/08-what-does-it-talk-to/): Inventory your program's network requirements, then find out which of them a browser can actually satisfy and what the rest would cost - [Could it run unmodified?](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/09-could-it-run-unmodified/): Establish what it would take to run your target as a binary rather than as source, and price the answer - [Measuring a kernel](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/10-measuring-a-kernel/): Take your own numbers off a prepared machine, then work out what a whole operating system would cost your target - [The rendering path](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/11-the-rendering-path/): Trace a pixel from a program to the screen, and find out what a committed approach leaves you able to draw with - [Defending the commitment](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-coreyweir/sessions/12-defending-the-commitment/): Present the approach you committed to and have it attacked by people who committed to something else