Slides and class repository
- Slides: Workshop 1 — AI for experimentalists (PDF) · Workshop 2 — Designing printed circuit boards (PDF) · Workshop 3 — Getting things made (PDF). Video recordings are not online.
- Class repository: class-board-2026 (a repository is a project folder whose complete history is kept by git; on GitHub it also lives online) — the reference firmware and phone app, the KiCad library, the workbook and the tutor skill (
/tutorin Claude Code). - The project wall: tigp-experimental-methods.github.io/showcase-2026 — every student's projects as cards, refreshing itself every minute; the showcase-2026 repository (every student can push; its README has the entry format).
- Examples of Project-1-style builds: pendulum-example (live) · csv-scope-example (live).
Installers (see Preparation for the step-by-step)
- Visual Studio Code
- Claude Code extension for VS Code · docs
- git · GitHub CLI · GitHub Desktop — git records the history of a folder of files; the GitHub CLI (
gh) is GitHub's command-line tool - uv (Python installer / package manager)
- KiCad (the free program we draw the schematic and lay out the printed circuit board in — running by Workshop 2)
- OpenSCAD 2021.01 (the program the housing is written in — installed and opened once by Workshop 3)
- PlatformIO for VS Code (builds and flashes the firmware) · Arduino IDE 2
- Bambu Studio (the slicer for the lab's Bambu Lab P1S printers — installed and opened once by Workshop 3)
Words we use
The tooling terms that recur on the course pages, one line each. Every page also explains a term the first time it appears there.
| Term | What it means |
|---|---|
| git | the tool that records the history of a folder of files |
| GitHub | the website where repositories are stored and shared |
| repository | a project folder whose complete history git keeps; on GitHub it also lives online |
| clone | download a full copy of a repository to your laptop |
| commit | save a snapshot of your changes with a one-line message |
| diff | the list of exactly what changed between two snapshots — what you review, rather than the whole file |
| push | upload your commits to GitHub |
| branch | a separate line of work inside a repository, so several people can change things without treading on each other |
| main | the main branch, the version everyone builds on — main always runs |
| merge | bring a branch's changes into the main line |
| pull request (PR) | a request to merge your branch into the shared project; someone reviews it first, comments, and approves |
| ring reviewer | the classmate who reviews your pull request (A reviews B, B reviews C, …, E reviews A) |
| CI | continuous integration: an automatic build that GitHub runs on every pull request and reports green or red |
GitHub CLI (gh) | GitHub's command-line tool: log in, create repositories, open pull requests from the terminal (the text window where you type commands) |
| Markdown | plain text with light formatting (# headings, - lists); what README, plan and handover files are written in |
| CLAUDE.md · PLAN.md · HANDOVER.md | plain-text files in the repository: how the project is set up (read by the agent every session) · what to build and in what order · what was done, verified, next, gotchas — so a fresh session can continue |
| coding agent | Claude Code working on your files: it reads them, writes code, runs commands and reports back |
| context window | everything the model sees in one session — the conversation, files and instructions; every message resends all of it, so keep it small: one topic per session |
| token · API key | the unit of text a model reads and writes (and is billed in) · the password that lets your program call a model or a service; keys are money and never go in a repository |
| Cloudflare Pages · GitHub Pages | free services that turn a repository into a public web page (Cloudflare Workers add a backend) |
| deploy | publish the page so it is live on the web |
| project website · project wall | the public GitHub Pages site of one project's repository (what it is, how it works, a picture or video of it working, what was verified, links to the app and the code) · the class page that shows every project as a card and refreshes itself every minute |
| webhook | a web address a service (Telegram, LINE) calls when something happens — how a bot receives a message |
| microcontroller · dev board | a small computer on a chip; the development board carries it with a USB-C connector and pins. Ours is the ESP32-S3, which has WiFi |
| firmware | the program that runs on the microcontroller |
| flash | write the firmware onto the board over USB |
| PlatformIO · toolchain | the tool that builds and flashes the firmware for us · the compiler and helper programs it uses |
| SIM mode | a build in which the firmware fakes its hardware, so the app works on the bare dev board before the class board exists |
| access point | the board's own WiFi network, which your phone joins |
| PWA · WebSocket | the phone app: a web page served by the board that behaves like an app · the live two-way connection between that page and the board |
| KiCad | the free program we draw the schematic and lay out the printed circuit board in |
| schematic · PCB | the circuit drawing · the physical board design with copper tracks |
| symbol · footprint | a part's drawing in the schematic · the copper pattern it is soldered onto |
| ERC · DRC | KiCad's electrical and design rule checks; zero errors means the checks pass |
| rule area (zone) · routing | the outlined region of the board that is yours · drawing the copper tracks between parts |
| JLCPCB | the factory that makes and assembles our boards; parts come from its parts library (part numbers like C12345 — no LCSC account needed) |
| BOM · Gerbers | the parts list · the manufacturing files sent to the factory |
| STL · STEP · DXF | 3D file formats: for printing · for CAD exchange · and the 2D drawing format for laser cutting |
| OpenSCAD · slicer | the free program in which a part is a short text file of shapes (the AI writes it, you change the numbers) · the program that turns a 3D model into the layers the printer follows (Bambu Studio) |
| GPIO · SPI · I²C | a general-purpose pin on the microcontroller · two common wiring standards for chips to talk to it |
AI for experimentalists — the tools named in Workshop 1
Agents and documentation
- Claude Code documentation — getting started, CLAUDE.md, skills, hooks, subagents, MCP; the VS Code extension (our choice: low lock-in, your code and history stay yours).
- Claude Code best practices (Anthropic engineering blog).
- Other ways to run an agent: Claude Cowork · Claude Design. The independent reviewer of a plan or of code is a fresh Claude session that has not seen the work.
- Anthropic Console — API keys for putting an LLM inside your own app; API documentation. Keys are money: keep them out of the repository.
- Markdown guide (plain text with light formatting) · Writing on GitHub
Git and GitHub
- Source Control in VS Code — edit → stage → commit without a terminal · GitHub Hello World · Pro Git (free book)
Deployment, for free
- GitHub Pages (static pages from a public repository — every project website, and any app that runs entirely in the browser, at
https://<user>.github.io/<repo>/) - Cloudflare Pages + Cloudflare Workers (straight from a GitHub repository; free tier — for anything with a backend, a bot webhook or a secret). You may need both hosts, so have both accounts ready.
- YouTube (unlisted) — video that only people with the link can see
- Hugging Face Spaces (demos of apps and models) · Zenodo (data and code with a citable DOI)
Apps that talk to you
- Telegram Bot API — create a bot with @BotFather; the easiest start
- LINE Messaging API — what everyone in Taiwan has; start with Telegram, then port to LINE
- ntfy.sh — push notifications only, no bot needed
Voice, video and pictures
- OpenAI Whisper (speech to text) · Chatterbox (text to speech, open source)
- show-your-work — the lab's public pipeline for videos, slides and reports: five Claude Code skills (
education-video,slide-deck,technical-report,natural-voice,showoff-render); script first, pictures last. Optional, for the presentation extensions of Project 1 and for a video describing your instrument. - Blender (scriptable renders of your hardware, from the CAD model) · Unreal Engine (scenery). Label generated imagery.
- Slides from Markdown: Marp · reveal.js. Diagrams: Mermaid, draw.io. Screen recording: OBS Studio.
Python and instruments
- uv guides · Python tutorial · matplotlib gallery · pySerial · PyVISA (instrument control)
- Project 1 in the browser: MDN canvas tutorial (what a simulator or game page is usually drawn with).
- IAMS: SAIL Club (Sharing AI Lunch Club) and its resources page.
Electronics
- KiCad documentation · KiCad learning resources · kicad-jlcpcb-tools plugin (LCSC part search, BOM — parts list — and CPL export)
- JLCPCB — PCB fabrication and SMT assembly · JLCPCB parts library · LCSC · PCB capabilities / design rules
- Dev boards: ESP32-S3 (ours: Jinhua #40729, NT$400) · Raspberry Pi Pico · Teensy 4.x · Arduino docs
- Analog: TI Op Amps for Everyone · ADI Op Amp Applications Handbook · Photodiode amplifiers (TI) · Horowitz & Hill, The Art of Electronics (library)
- Data converters: ADI Data Conversion Handbook; timebases: NIST frequency stability
- Practical PCB layout: PCB design guidelines for reduced EMI (TI)
- Instruments: SCPI standard (talk to your scope from Python)
- Reading for the projects: papers on low-field NMR, the datasheets of every part on the class board, tools and suppliers (class repository, docs/references.md)
Getting things made
The tools and services of Workshop 3. The class housing is written in OpenSCAD and sliced in Bambu Studio; the other programs are for later, when a part needs exact geometry, a STEP file (the exact 3D exchange format) for a machining service or a drawing for the machinist.
- OpenSCAD — the program the class housing is written in: download (the stable release, 2021.01) · the user manual · the cheat sheet (one page of every shape, move and combination).
- BOSL2 — an OpenSCAD library: rounded boxes, screw and insert holes, real threads, when plain OpenSCAD is not enough.
- Bambu Studio — the slicer for the lab's Bambu Lab P1S: import, orient, check the supports, slice, read the time and the grams.
- FreeCAD 1.1 — the largest free CAD program, drawn with the mouse, with a Python console: a dimensioned drawing for the machinist, sheet metal with its flat pattern, a first FEM check.
- CadQuery and build123d — CAD as ordinary Python, still code the AI writes: when a part needs exact holes or a machining service asks for a STEP file.
Five CAD programs compared
| OpenSCAD | CadQuery | build123d | FreeCAD | SolidWorks | |
|---|---|---|---|---|---|
| How you drive it | code, in its own window | Python | Python | mouse (GUI) + Python | mouse (GUI) |
| Cost | free | free | free | free | thousands of US$; student licence |
| Geometry | mesh (facets) | exact | exact | exact | exact |
| Exports STEP | no | yes | yes | yes | yes |
Mechanical
- 3D printing design rules: Hubs FDM design guide · key design considerations · Prusa knowledge base
- Heat-set inserts: CNC Kitchen tests · Markforged guide
- Laser cutting: MakerCase (box generator) · Boxes.py · in-house acrylic laser cutter (DXF or STEP — ask the instructor)