Day 1 · Onboarding

Mechanisms & micro:bit Intro

First contact with the micro:bit, first working mechanism, first taste of a take-home deadline. ~2.5–3 hours.

⏱ ~2.5–3 hrs 🧰 Servo + cardboard build 📶 Bluetooth intro lesson
✂️
Cardboard prep
Pre-cut the mechanisms cardboard before class. All cardboard pieces should be pre-cut and pre-glued into A4-size templates ahead of each lesson, so class time goes to wiring, coding, and understanding — not scissors.
⚠️
Safety briefing (do this first, ~5 min)
Craft knives/scissors for any on-site trimming, hot glue if used, and servo pinch points all warrant a short safety talk today — even with pre-cut templates, some trimming is likely.
🧰
Hardware checklist
  • 6× micro:bit
  • 6× servo motors
  • Cardboard templates — pre-cut and pre-glued
  • 1–2 phones/tablets (needed later in the week for Teachable Machine)
  • Charging cables + spare batteries
🤝
Code of conduct
Hand out or project a short, friendly one-pager today — e.g. "we help teammates who are stuck," "we test kindly." It mirrors a real onboarding document and reinforces the soft-skill goals running through the whole week.
TimeActivity
0:00Welcome, cardboard/servo safety briefing, hand out pre-cut Mechanisms in Your Car templates
0:05micro:bit Intro interactive lesson (narrated, live Bluetooth demo)
0:50MakeCode editor orientation — blocks, downloading code to the board
1:05Assemble the pre-cut/pre-glued Mechanisms in Your Car piece
1:45Wire the servo to P0; code Button A / B to control position
2:30Assign the take-home sprint; wrap-up
Students are required to
  • Bring their assembled mechanism home
  • Try one stretch tweak — e.g. adjust the servo's turning range, or add a second mechanism
  • Post one photo + one-line update before Day 2 (a phone/parent message is fine for now — Slack account is set up on Day 2)
What they learn — and why it matters
  • Servo wiring & button events — the exact skill reused in every later build
  • Code changes a number → a real object moves — the core idea behind every robot this week
  • Cardboard assembly discipline — precision now saves rebuild time later

Notes on Mechanisms

Start simple and physical — you're building toward today's hands-on build, the wiper-style mechanism.

"A mechanism is just a part that turns one kind of movement into another. Your arm has mechanisms — your elbow turns a push into a swing. A car's windshield wiper has one too: a motor spins round and round, but the wiper blade doesn't spin — it swings back and forth. Something inside the wiper mechanism takes that spinning motion and *converts* it into a side-to-side sweep. Today, you're going to build that same idea out of cardboard, and control it with code."

Keep this concrete — if a student asks "why not just make the motor swing back and forth directly," that's a great moment to point out: motors are usually built to spin, not swing, so engineers design a *mechanism* to get the motion they actually want out of the motion the motor actually gives them. That's the whole idea behind today's build.

micro:bit Features — walk through each with the class

1LED Display

A 5×5 grid — 25 LEDs total. It can show text, animations, and pre-programmed pictures. Hold up a board (or the on-screen simulator) and have the class count the grid with you.

2Buttons (A & B)

Two built-in buttons with no fixed function — their behavior is entirely defined by code. Point to where the buttons are on the board with the class. Then open it up:

"What could these two buttons be used for?" — let them brainstorm: turning something on/off (like mute/unmute), a doorbell, controlling a robot.

Key teaching point: the *same* two buttons, unchanged in hardware, can become a lamp switch, then a doorbell, then a game controller — purely through code. It's the programmer who decides what a button does, not the button itself.

3Accelerometer

An electromechanical sensor that measures physical acceleration — dynamic force like movement or vibration, or static force like gravity. It measures across X, Y, and Z axes to work out orientation and movement in 3D space.

Real-world uses: screen auto-rotation and step-counting on phones/wearables · industrial vibration monitoring for predictive maintenance · airbag triggering and vehicle stability in cars · motion data for drone and aircraft navigation and stabilization.

It can detect tilt (inclination via gravity), vibration, and impact. Classroom framing: rotating a phone screen, checking if something's level, detecting a jump or a bump.

4Compass (Magnetometer)

Measures the strength, direction, and change of a magnetic field, and can detect the board's rotation angle relative to Earth's magnetic pole. Uses: determining geographic direction, detecting magnetic field changes.

"To calibrate the compass: open the calibrate screen in the app, then rotate the board slowly until every LED on the grid lights up."

5Thermometer

Measures the ambient temperature around the board.

6Analog Pins

Allow connecting external sensors and modules — motors, LEDs, speakers, and more. They can also function as extra buttons. This is the pin family today's servo plugs into (P0).

🖼️
Image not yet supplied
MakeCode editor screenshot — Bluetooth service blocks
Bluetooth services setup — download to micro:bit for the interactive lesson Open in editor
bluetooth.onBluetoothConnected(function () {
    basic.showIcon(IconNames.Yes)
})
bluetooth.onBluetoothDisconnected(function () {
    basic.showIcon(IconNames.No)
})
basic.showIcon(IconNames.SmallDiamond)
bluetooth.startAccelerometerService()
bluetooth.startButtonService()
bluetooth.startLEDService()
bluetooth.startTemperatureService()
bluetooth.startMagnetometerService()
bluetooth.startIOPinService()
basic.forever(function () {

})
🔧 Open this in the Teknubi editor and click Download to flash the board.
Mechanisms lesson — servo + bar graph, controlled by A/B/AB buttons Open in editor
let x = 90

pins.servoWritePin(AnalogPin.P0, x)
led.plotBarGraph(x, 180)

input.onButtonPressed(Button.A, function () {
    if (x < 180) {
        x += 10
        pins.servoWritePin(AnalogPin.P0, x)
        led.plotBarGraph(x, 180)
    }
})

input.onButtonPressed(Button.B, function () {
    if (x > 0) {
        x -= 10
        pins.servoWritePin(AnalogPin.P0, x)
        led.plotBarGraph(x, 180)
    }
})

input.onButtonPressed(Button.AB, function () {
    x = 90
    pins.servoWritePin(AnalogPin.P0, x)
    led.plotBarGraph(x, 180)
})

basic.forever(function () {

})
🔧 Open this in the Teknubi editor and click Download to flash the board.
Day 2 · Onboarding

Vibe Coding & App Control

Sensing & Setup — first standup ritual, first automation logic, and Slack + Trello are introduced ahead of Hiring Day. ~2.5–3 hours.

⏱ ~2.5–3 hrs 🤖 ChatGPT vibe-coding 💡 NeoPixel automation 🗂 Slack + Trello setup
✂️
Cardboard prep
Have the cardboard pre-cut before class. Important: when cutting, skip cutting the opening for the fan.
✉️
Slack + Trello accounts need parental consent
Both platforms require an email address to create an account, and both set a minimum account-holder age (commonly 13, 16 in some places). Two compliant options:
  • Register each account under a parent/guardian's email with their consent (best — mirrors a real HR-issued login)
  • One adult holds all accounts, using one email alias per student from a single inbox (e.g. yourname+asha@gmail.com)
Either way, get written parental consent for tool use at enrollment.
Time buffer
Cardboard/electronics work with beginners reliably runs long. If the day is behind schedule, the "second mini-lesson" slot below is the first thing to cut.
TimeActivity
0:00Standup: each student shares what they tried at home (everyone speaks, kept short)
0:15Build + code Edu Smart Home mini-lesson 1: Automatic Lights (NeoPixel)
1:15Second mini-lesson if pace allows; otherwise becomes optional home content
2:00Set up Slack + Trello accounts together; walk through channels/board
2:30Tease Friday's goal: "Tomorrow, you get hired." Assign pre-work: think of a company name, and which station you'd want to build
Students are required to
  • Complete Slack + Trello account setup (parent email/consent — see tip above)
  • Speak during standup — the shortest, lowest-stakes version of a real skill
  • Come to Day 3 with a station preference in mind
What they learn — and why it matters
  • Sensing-and-reacting logic — the conceptual bridge to AI-driven sorting later
  • Giving a short status update — the single most repeated soft skill in real tech work
  • Comfort with the tools before they carry real stakes on Day 3

What today's app needs to do

The control app the class builds today needs to support:

  • Opening and closing a door via open/close buttons on a phone app
  • Turning lights on/off, and switching between Red, Blue, and Green
  • Changing light brightness via a slider
  • A "connect to micro:bit" button in the app
  • Door open/close control and NeoPixel on/off control
  • A key-lock interface — one flow where a code is entered and it "unlocks"/opens

Main lesson — Vibe Coding

  1. Explain "vibe coding" in simple terms: coding by describing what you want to an AI, then iterating on what it gives you back — rather than writing every line by hand yourself.
  2. Kids use ChatGPT to vibe-code the HTML control app that connects to the micro:bit over Bluetooth UART and drives the functions listed above.
  3. Hand out (or demo live with) the starter prompts below — they're concrete enough to paste straight into ChatGPT and reliably get back usable HTML/JS using the Web Bluetooth UART pattern that matches the code below.

Starter prompts — hand these to kids, or use as a live demo

Prompt 1 — the base appBuild me a single HTML file with a simple, colorful control panel for my micro:bit robot. It should have a big "Connect to micro:bit" button that uses the Web Bluetooth API and the Nordic UART Service to connect. Once connected, show: an "Open Door" button that sends the text "D", a "Close Door" button that sends "C", and three color buttons (Red, Green, Blue) that send "R", "G", and "B". Make the buttons big, rounded, and easy to tap on a phone.
Prompt 2 — add the brightness slider and off buttonAdd a brightness slider to the app and an "Off" button. The Off button should send the text "OFF" over the same Bluetooth UART connection we already set up. The slider doesn't need to send anything yet — just show its current value on screen.
Prompt 3 — add the key-lock screenAdd a second screen (or a section on the same page) that looks like a keypad lock — a 4-digit code entry with number buttons and a display of what's typed so far. When the student enters 1397, send that exact text "1397" over the Bluetooth connection to unlock. When they enter 0000, send "0000" to lock it again. Show a friendly "Unlocked!" message when 1397 is sent.
Prompt 4 — if the app isn't connectingMy Web Bluetooth connection isn't working from my HTML app. Can you check that I'm requesting the Nordic UART Service UUID correctly, and that I'm writing to the RX characteristic (not the TX one) when I send commands to the micro:bit?

Note for the teacher's script — call this out explicitly, it's a fun reveal moment for the kids: the code "1397" triggers an unlock "celebration" sequence (music + a green/white flash), and "0000" is the lock/reset code.

Bluetooth UART door / light / lock control Open in editor
let data = ""
let strip: neopixel.Strip = null

bluetooth.onBluetoothConnected(function () {
    basic.showIcon(IconNames.Happy)
})

bluetooth.onBluetoothDisconnected(function () {
    basic.showIcon(IconNames.No)
})

bluetooth.onUartDataReceived(serial.delimiters(Delimiters.NewLine), function () {
    data = bluetooth.uartReadUntil(serial.delimiters(Delimiters.NewLine))

    if (data == "C") {
        pins.servoWritePin(AnalogPin.P0, 70)
    }

    if (data == "D") {
        pins.servoWritePin(AnalogPin.P0, 175)
    }

    if (data == "R") {
        strip.showColor(neopixel.colors(NeoPixelColors.Red))
        strip.show()
    }

    if (data == "G") {
        strip.showColor(neopixel.colors(NeoPixelColors.Green))
        strip.show()
    }

    if (data == "B") {
        strip.showColor(neopixel.colors(NeoPixelColors.Blue))
        strip.show()
    }

    if (data == "W") {
        strip.showColor(neopixel.colors(NeoPixelColors.White))
        strip.show()
    }

    if (data == "OFF") {
        strip.showColor(neopixel.colors(NeoPixelColors.Black))
        strip.show()
    }

    if (data == "1397") {
        pins.servoWritePin(AnalogPin.P0, 70)

        music._playDefaultBackground(
            music.builtInPlayableMelody(Melodies.Entertainer),
            music.PlaybackMode.InBackground
        )

        for (let index = 0; index < 3; index++) {
            strip.showColor(neopixel.colors(NeoPixelColors.Green))
            strip.show()
            basic.pause(200)

            strip.showColor(neopixel.colors(NeoPixelColors.White))
            strip.show()
            basic.pause(200)
        }
    }

    if (data == "0000") {
        pins.servoWritePin(AnalogPin.P0, 175)

        strip.showColor(neopixel.colors(NeoPixelColors.Black))
        strip.show()
    }
})

bluetooth.startUartService()

strip = neopixel.create(DigitalPin.P1, 8, NeoPixelMode.RGB)

strip.showRainbow(1, 360)
strip.show()

basic.forever(function () {
    bluetooth.uartWriteValue("x", input.lightLevel())
    basic.pause(50)

    bluetooth.uartWriteValue("y", input.temperature())
    basic.pause(50)
})
🔧 Open this in the Teknubi editor and click Download to flash the board.
Day 3–4 · Hiring Day, Sprint 1, Sprint 2 & Integration

Color Sorter — "The Sorting Line" Station

The flagship team build. Each student builds and codes one Color Sorter unit — a machine that uses a Teachable Machine AI model to recognize a ball's color and rolls it left or right via a servo. Individually a Beginner-level build; together, six stations become one connected factory line, each doing one filtering job before passing balls to the next station.

⏱ ~2.5–3 hrs / day 🧠 Teachable Machine AI 🏢 Hiring Day ritual 🔧 Integration + QA testing
🖨️
Print before Day 3
Print one Employee Application Card per student (template below), and fill in the company name before printing — or leave it blank and let the group name it together earlier in the week. Also laminate a stack of ID badges printed with each student's name and "Station Engineer" — hand these out right after hiring, before the sprint begins.
🧰
Materials
Six pre-cut/pre-glued Color Sorter station cardboard chassis · 6× micro:bit · 6× servo motors · 1–2 phones/tablets for Teachable Machine training · connector-chute cardboard for linking stations together (Day 4) · a stepped surface so balls can flow by gravity from one station to the next.
✉️
Consent reminder
Confirm Slack + Trello parental consent forms are on file before Hiring Day — today is the first day the tools carry real stakes (see Day 2 tips for the setup options).

1. Introduce Teachable Machine

Teachable Machine is a tool that lets you train a simple AI model without writing any machine-learning code. You show it examples — pictures, sounds, or poses — sort them into labeled groups, and it learns to tell the groups apart on its own.

2. What's behind the AI, in plain terms

"When we 'train' a model, we're not writing rules like 'if it's red, it's a stop sign.' Instead, we show the computer lots of examples — 'this is red,' 'this is blue,' 'this is green' — over and over, and it slowly learns the *pattern* that makes red look like red. That's what a model is: something that's learned patterns from examples, instead of being told the rules directly."

Keep this accessible — the point isn't the math, it's the idea that a model *learns* rather than being *programmed with rules*.

3. Optional illustrative video

If it fits the flow, this video is a good visual companion to the explanation above:

4. Warm-up: training a model to recognize hand gestures

Before jumping into the color-sorting build, walk the class through training a model on hand gestures — this is the entry point that makes the AI concept concrete before it's applied to sorting balls.

  1. Open Teachable Machine, choose an Image Project, then a Standard image model.
  2. Create 2–3 classes — e.g. "Thumbs up," "Open hand," "Fist."
  3. For each class, hold the webcam button and show that gesture for a few seconds from a few angles — repeat for each class.
  4. Click Train Model, then test it live — hold up each gesture and watch the confidence bars respond.
  5. Bridge to the real build: "That's exactly what you'll do next — except instead of a hand gesture, you'll train it to recognize a ball's color."

Day 3 is the hinge of the whole week — the moment the bootcamp shifts from "learning" to "working." Run it as a small, sincere onboarding ritual, not just a costume change.

MomentWhat happens Cold openIn character as founder/hiring manager, announce the company by name and state its mission: "We're building The Sorting Line — a machine that sorts colored balls automatically, and no single person builds the whole thing." The applicationEach student fills a short, one-page Employee Application Card — name, one skill they're proud of from Days 1–2, and which station they'd like to build. This is their first "job application," made concrete and physical. The hiringStudents are "hired" on the spot. Each receives an employee ID and a badge/name tag — the small ceremony that makes the rest of the week feel earned rather than assigned. The briefingExplain the ownership model: every student owns one Station, and stations must physically hand off to their neighbor's — a station only "counts" if it connects cleanly to the next one in the line. The board walkthroughIntroduce the Trello board live (not just described) — columns, and each student's starter cards for the day. The sprint goalOne concrete, spoken goal: "By the end of today, your station should physically sort one ball correctly." Naming one goal out loud turns free-form building into something closer to real sprint planning. Close of dayStudents move their own Trello cards and post a one-line status update in Slack before leaving — the habit continues through Day 4.

The ritual costs almost nothing in time (15–20 minutes) but is what makes every subsequent hour of the week land differently. Kids consistently take a "job" more seriously than a "craft project" — even when the underlying activity is identical.

TimeActivity
0:00Cold open, company mission announced
0:10Employee Application Cards filled and submitted
0:20"Hired" — badges/IDs issued, station assignments given
0:30Ownership + sprint-goal briefing; Trello board walkthrough with real starter cards
0:45Sprint 1: build station chassis, wire servo, begin training the color-recognition model
2:30Close-out: move Trello cards, post a status line in Slack before leaving
Students are required to
  • Complete and submit an Employee Application Card
  • Reach the stated sprint goal: station sorts one ball correctly by end of day
  • Move their own Trello cards — not have it done for them
What they learn — and why it matters
  • AI model training via Teachable Machine — their first hands-on AI concept
  • Owning a deliverable — the difference between "a craft" and "my job today"
  • Working from a written sprint goal — real sprint-planning, at kid scale
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Co.
Employee Application
Name
Age
Date hired
A skill I'm proud of
Which station would you like to build?
Red Station Blue Station Green Station Yellow Station Orange Station Purple Station
Employee signature
Hiring manager signature
Employee ID # ____

Kept deliberately lightweight — two tools, not a full engineering stack — so class time goes to building, not app-switching.

Slack channels
ChannelPurpose #generalCompany-wide announcements from the "founder" (instructor) #standupDaily written check-ins: what I'm building, what I need help with #engineeringBuild and code questions, asking teammates for help #qaBug reports filed during Day 4 integration testing #winsOptional: a place to post something that worked — good for morale
Trello board columns
ColumnPurpose BacklogAll starter cards for the current sprint day In ProgressWhat a student is actively working on right now TestingReady for a teammate to QA-check during Day 4 DoneConfirmed working — moved here by the student themselves

Sample Day 3 starter cards: "Build chassis," "Wire servo," "Train color model," "Connect via Bluetooth."

The realism payoff: individual stations become one physically connected factory line. ~2.5–3 hours.

TimeActivity
0:00Standup: status of each station, blockers named out loud
0:15Finish individual station wiring/coding; build cardboard connector chutes between stations
1:15Arrange stations on a stepped surface so balls flow by gravity from one station to the next
1:45Integration testing: rotate a "QA" role — a student tests a teammate's station and files bugs as Trello cards in #qa
2:30Fix critical bugs found; assign final touch-ups for tomorrow's demo
Students are required to
  • QA-test a teammate's station and file at least one clear bug report
  • Fix any bug filed against their own station
  • Help physically connect their station to its neighbor's chute
What they learn — and why it matters
  • Integration testing — a ball only reaches the right bin if every upstream station worked
  • Writing a clear bug report — a real, transferable engineering skill
  • Debugging someone else's work respectfully — a genuine team soft skill
Control Robot with Hand Gestures, Ball Lifting Machine, and Big Robot Head are excellent Advanced projects students will likely love — but they carry higher build time, extra hardware cost (the Big Robot Head needs a five-servo adapter board), and real risk of not finishing for a beginner cohort in five days. Reserve these for early finishers, or as flagship builds for a follow-up, more advanced cohort.
Day 5 · Demo Day

Presentation — "Ship It"

Final polish, then the company presents. ~2.5–3 hours (may extend slightly for the parent demo slot).

⏱ ~2.5–3 hrs 🎤 Live pitches 🏆 Certificates
🏆
Certificates
Print a simple "Employee of the Week — Station Engineer" certificate per child ahead of today — it gives Demo Day a satisfying close and something tangible beyond the robot itself.
📸
Parent consent
Confirm the signed parental consent form on file covers photo/video use for today's demo, in addition to the Slack/Trello account setup.
TimeActivity
0:00Final polish window; full line rehearsal run without parents present
1:00Pitch deck prep — each student prepares 2–3 spoken lines about their own station
1:30Parents arrive; company briefing recap for the audience
1:40Live demo: full Sorting Line runs, ball travels the whole line
2:00Each "department" (student) gives a short pitch: what I built, what broke, how I fixed it
2:20Certificates / employee recognition; stations packed up to take home
Students are required to
  • Speak for at least 30–60 seconds about their own station, unscripted or lightly scripted
  • Have their station demo-ready and disconnected/packed to take home
What they learn — and why it matters
  • Presenting your own work — arguably the most useful single soft skill in the whole week
  • Talking about failure calmly — "what broke, how I fixed it" normalizes debugging as part of the job, not a shameful mistake
  • A finished, owned artifact — the take-home robot as proof of a week's real work

Kids build a small presentation framework today — a simple structure for what to say and show when presenting their project: what they built, what it does, what they learned. Hand out or project the fill-in-the-blank template below rather than writing a long script — let each student's own voice fill it in.

"You don't need to memorize anything. Just fill in these blanks in your own words, and when it's your turn, read them like you're telling a friend about something you're proud of."

My station is called and my job on the line was to sort balls.
It works by using to recognize the ball, then to sort it left or right.
The trickiest part was , and I fixed it by .
One thing I'm proud of is .
If I had one more day, I would add .