Pair Notebook

Author

Sadamori Kojaku

Published

August 25, 2026

Most assignments ask you to hand in code. This one asks you to hand in the conversation you had while learning something.

A Pair Notebook is one module of this course taught as a one-on-one tutoring session. You talk to an AI tutor in your terminal. Beside it, in your browser, a marimo notebook fills up as you go — figures, sliders you can turn, photographs of your own pen-and-paper work, and notes that quote your answers word for word.

At the end you have a notebook that is your own illustrated lecture note. That notebook is what gets graded.

TipWhat is graded

Your thinking, not your code. No programming experience is required.

Needing hints is not penalized. The session log is read for how you reasoned — asking questions and taking detours counts in your favor. That is the whole point of the exercise.

The plain facts, before anything else:

Who You, alone. The team assignment is the mini-project — a different thing.
How many One per module, for modules 2 through 6. Each is handed out on Classroom 50 — the site this course uses to distribute and collect work — when its module starts.
What it is worth 10 points of your final grade, the five together. See how this course works.
How long About 60 to 90 minutes. You can stop anywhere and pick it up later, as many times as you like.
What you need A terminal, git, Node.js, uv, pi, and your course API key — see Set up your machine.

A session, start to finish

Here is what the two windows do. Use ◀ ▶ to step through it yourself.

Terminal — you and your tutor
Browser — your notebook
👆

Before your first session

Everything on this page assumes you have already done the one-time machine setup: a terminal, git, GitHub CLI, Node.js 24+, uv, pi, and NETSCI_API_KEY in your shell profile. That page also says where the key comes from and what to do if yours has not arrived.

Ten seconds to check you are ready. In a terminal:

node --version          # v24 or newer
uv --version
git --version
pi --version
echo $NETSCI_API_KEY    # your key, starting sk-nsci-
NoteWindows: which terminal?

Both Git Bash and Windows Terminal / PowerShell work. The commands on this page are written for Git Bash; in PowerShell the last check above is echo $env:NETSCI_API_KEY. If you have no preference, use Git Bash.

Everything printed but the key? Go back to step 4 of the setup page — a missing key is the one thing that stops a session dead in the middle.

To see how much of this week’s allowance you have left:

curl -H "Authorization: Bearer $NETSCI_API_KEY" https://llm.skojaku.com/v1/usage

(Opening that address in a browser will not work — it needs your key.)

1. Get your assignment folder

Accept the assignment on Classroom 50, which is what this course uses to hand out and collect work. It creates a private GitHub repository for you. Copy that repository’s URL, clone it, and go into it — this is the folder you will run everything in:

git clone <the repository Classroom 50 created for you>
cd <the folder it made>

2. Run the setup script

Inside that folder, once per machine:

node setup-pi.mjs

It hands pi the course models and gets the notebook’s Python packages down before you need them, and it prints You are set when it is done. What it does line by line, why it looks like it has hung, and what to answer if you are asked to trust the folder: Point it at the course models on the setup page.

Your tutor’s own toolkit is not something you install — see The tutor’s toolkit installs itself for what it fetches and what to do if the fetch fails.

Starting a session

Inside your assignment folder, type:

pi

That is the whole command. There is no slash command to start — say hello in plain words and your tutor takes it from there. It starts the notebook itself, opens it in your browser, and shuts it down again when you are done.

NoteHave pen and paper ready

Three steps happen off-screen, on real paper — a table, a drawing, a derivation. You photograph each with your phone and drop it into the notebook.

Getting the photo from your phone onto this computer is the one step nothing on screen can do for you:

  • iPhone → Mac: AirDrop it. It lands in Downloads.
  • Android → Windows: the Phone Link app, or email it to yourself.
  • Anything → anything: email or message it to yourself and save the attachment.

Then drag the file from Downloads into the drop box in the notebook and press 📨 Send to my tutor. Dropped the wrong picture? Drop another into the same box and send again, as often as you like.

If photographing genuinely will not work for you, say so in the terminal and type the work out instead. That counts.

The two windows

Window What it is
Terminal (tutor) Where you and your tutor talk. Every question and every answer happens here.
Browser (notebook) The whiteboard: figures, interactive experiments, and photo uploads. It is built one cell at a time as you go.

Three things in the notebook are worth knowing about:

📨 Send to my tutor. A drop box or a code box has this button under it. Press it and your tutor sees your work. A slider or a radio button has no button — play with it, then just say what you saw in the terminal.

📷 Photo uploads. Photograph your paper with your phone, drop the image into the box, and press send. Your tutor reads the photograph. Wonky handwriting is fine; it is your reasoning that is being read.

⚖️ Stuck with your tutor? Always the last thing on the page. If you think an answer should have counted, you want a fresh try, or you would rather move on — say so there and press the button. A second, stronger model reviews the whole situation and makes a call your tutor has to follow. Using it is never held against you.

Handing it in

You do not upload anything by hand. When you are done for the day, tell your tutor in the terminal:

hand it in

It commits your notebook, your session log and the summary, and pushes them to your Classroom 50 repository. Three files land there:

File What it is
notebook.py the notebook the two of you built
session_artifacts/session_log.jsonl your answers, verbatim
session_artifacts/session_summary.md a summary for your instructor

Stopping halfway and picking it up tomorrow is fine — hand it in each time you stop. A session finished in three sittings is worth exactly as much as one finished in a single evening, and the commit history simply shows when the work happened.

Doing it yourself instead
git add -A && git commit -m "Pair Notebook 02" && git push

If something goes wrong

Nothing you have already done is ever lost. Your answers are written to session_artifacts/ as they happen, and the notebook is saved as it is built. Whatever the problem, closing the terminal and running pi again picks up where you stopped — it asks whether to continue or start fresh.

Find the line you actually saw on screen:

What you see What it means What to do
pi: command not found the install put pi on your PATH, and this terminal started before that open a new terminal; if it persists, install pi again
⚠ Your tutor cannot reach the course server your key or the address is wrong — the message says which do what it says; it usually means re-running node setup-pi.mjs
invalid_api_key the key is wrong, or was never set in this terminal window check it, open a new terminal, run node setup-pi.mjs again
Connection error., repeated your computer cannot reach the internet, or the course server is down check your connection, wait a few minutes, run pi again
something about your allowance, or 402 you have used this week’s quota tell your instructor; your work is saved and you can carry on when it resets
model backend is unavailable + a request_id the course server’s own upstream is having a moment — not your fault wait a few minutes and run pi again; send your instructor the request_id if it persists
the notebook page went blank, or you closed the tab the whiteboard lost its connection nothing — your tutor reopens it. If it does not, say so in the terminal
the notebook never opened in your browser same thing, earlier tell your tutor; it has the address and will hand it to you
⚠ something hiccuped — your tutor is on it a notebook operation failed and your tutor is retrying nothing. Keep talking
your tutor keeps asking the same thing it is stuck use the ⚖️ box at the bottom of the notebook — that is exactly what it is for

To check your allowance directly:

curl -H "Authorization: Bearer $NETSCI_API_KEY" https://llm.skojaku.com/v1/usage

(Again: that address does not work in a browser — it needs your key.)

Anything else — ask on Discord, with the line you saw copied out. Getting stuck on setup is not part of the assignment.