Login
Mechanical Turk: a teachers’ workshop on how computers work
Login

Children use computers every day, but mostly they run programs that other people made. This workshop argues that they should also learn how a computer works. A person who knows how it works can read a program's logic, predict what it will do, and make a machine carry out their own intentions, even when AI helped write the code.

The workshop is for teachers in Northville, Michigan, and it is done mostly on paper. Jason Kridner presents it under the title "Amplifying Agency". Agency here means being able to act on purpose and get the result you intended. A tool amplifies agency when it lets you do more of that. The workshop has two exercises, and they matter equally.

  1. The counter machine, with crayons. Each table runs a Minsky counter machine: an imaginary computer described by the computer scientist Marvin Minsky. Its memory is a few cups of crayons, and its program is a row of cards. There are only two kinds of card. One adds a crayon to a cup. The other takes a crayon out of a cup, or, if the cup is empty, sends you to a different card instead of the next one. With just those two instructions it can compute anything an ordinary computer can. So it shows how a machine computes, step by step, with nothing hidden.
  2. The next-word hat. The room starts from a shared opening sentence. Everyone writes a next word on a slip of paper, and one slip is drawn from a hat and added to the sentence. Then everyone writes again, and the process repeats. Run it twice from the same start and the two sentences come out different. This gives a loose idea of how a language model, the kind of AI that writes text, picks one word at a time by chance. It shows what today's AI is and isn't, and why it doesn't give the same answer every time.

The workshop opens with a short story about a child finding her own voice through drawing, and about tools she can use but not control. The story says why this matters. The workshop ends with a demonstration. Students program BeagleConnect Zepto, a tiny circuit board that is a whole computer, to play a game against each other, and the game is shown on BeagleBadge, a board worn on a lanyard with a paper-like screen. The code comes from the interactor project, where students compete through programs they wrote themselves.

What's here

Changing the slides

Every slide is one entry in www/workshop-v2/slides.json. After editing it, rebuild the deck and check it. Run these from the checkout's top folder, the one that holds this README:

node www/workshop-v2/build.cjs
node www/workshop-v2/verify.cjs

build.cjs writes the slide page, index.html, from slides.json, so an edit made only to index.html is lost at the next build. verify.cjs runs every counter machine program on the slides and the printed cards, and checks that the slide count, the image links and the page links are right. It prints PASS when all is well.

This project is kept in Fossil, a version-control system: it records every change to the files as a new version, and a checkout is your copy of them. The pictures are kept apart from that. They are unversioned files: files that Fossil keeps on the project's server, with no record of earlier versions, so a checkout doesn't contain them. Each slide links to its picture by web address, such as https://ollama.openbeagle.org/mechanical-turk/uv/assets/beaglebadge.png. So replacing a picture on the server changes the slides at once, with no rebuild.

The commands need Node.js, a program that runs JavaScript outside a browser. On a computer that doesn't have it, run crystal run tools/authoring-root.cr. It needs Crystal, the programming language the script is written in. The script builds a private folder, /workspace/tools, holding Node.js, the Chromium web browser for testing the slides, and a speech transcriber, which turns a recorded voice memo of the story into text. The script installs nothing outside that folder. It also writes a small script, /workspace/tools/enter, that runs a command inside that folder, for example /workspace/tools/enter node www/workshop-v2/verify.cjs.