The course · grades 5-12

Robotic Arm Programming

Eight modules. Thirteen weeks. Two tracks running side by side for grades 5-8 and 9-12. Every module ends with a gripper mission on a desk, not a quiz.

8 modules ~26 hours Auto-graded labs CSTA · NGSS · OSSD

Two tracks, the same missions

Junior is shorter, not easier in ambition. A two-minute placement quiz picks the track, and a student can switch.

Junior

Grades 5-8
  • Blocks throughout, with the coordinate pad from module 4
  • One new idea per lab, more starter code given
  • Missions from a card deck rather than free design
  • Reads the generated C++ without having to write it

Senior

Grades 9-12
  • Arduino C++ from module 1, blocks abandoned by module 4
  • Derives and implements the inverse kinematics
  • State machines, non-blocking timing, error recovery
  • Capstone is a free design with a written spec

The eight modules

Modules unlock in order, because module 4 genuinely needs module 2 to have happened.

00

Set Up & First Motion

Week 1

Assemble the arm, install the firmware in one click, and jog every joint. The whole module exists to buy the "it moved!" moment before any code.

Big idea: a servo takes an angle, not a speed Mission: Wave Hello
01

Joints & Angles

Weeks 2-3

Turn a pose into an instruction, and a list of instructions into a program. Junior uses blocks; senior writes Servo, attach() and write() directly.

Big idea: sequencing, where order changes the outcome Missions: Robot Metronome · Knock the Tower
02

The Gripper

Weeks 3-4

Pick something up without breaking it or the servo. This is where the physics gets real: a servo told to close past the object stalls, draws current, and resets the board. That is a genuine engineering lesson delivered by a three-dollar part.

Big idea: state and functions; constrain() as a safety device Missions: Pick One Block · Cup Transfer · Don't Crush the Marshmallow
03

Pick & Place

Weeks 4-6

The canonical robot task, done reliably ten times in a row. Loops and pose arrays stop being abstractions the moment copy-paste starts failing.

Big idea: loops and data, because a pose is four numbers Missions: Stack Three · A→B Relay · Palletize a 2×2 grid
04

Coordinates & Inverse Kinematics

Weeks 6-8

The intellectual peak. Stop thinking in joint angles and start thinking in millimetres. Senior derives the two-link solution from atan2 and the law of cosines, then finds out what happens when acos is handed 1.0000001.

Big idea: joint space versus Cartesian space Missions: Trace a Square · Draw Your Initials · Call the Coordinate

Maps to Ontario MCR3U. These labs grade on printed numbers, so they pass in the simulator with no arm attached, which is what keeps the course moving before kits arrive.

05

Sensing & Reacting

Weeks 8-9

The two joysticks, the button and the LED. The arm starts responding to the world instead of replaying a script, and students discover that a joystick at rest never reads exactly centre.

Big idea: input → decision → output Missions: Joystick Teleop · Claw Machine · Status Light
06

Automation & Algorithms

Weeks 10-11 · Senior

A program that runs unattended and survives things going wrong. Where students learn that delay() makes a robot deaf, and millis() lets it listen.

Big idea: state machines and non-blocking time Missions: Colour Sort · Timed Assembly Line · Recover a Dropped Part
07

Capstone

Weeks 12-13

Design a task nobody set you, and make the arm do it. Junior chooses from four mission cards; senior writes a spec, builds it, films a ninety-second demo, and reflects on one thing that did not work.

Graded on: it works · code quality · uses coordinates · handles a failure · documentation

How the labs actually grade

Not by comparing your code to ours. By running it and checking what the hardware did.

Your code is compiled and run

Really compiled, by arduino-cli, then executed on a simulated ATmega328P in the browser. There is no pattern-matching on your source.

Checks read the pins

A check says things like "the shoulder was commanded to 90 degrees", measured from the actual servo pulse the simulator produced. Any code that achieves it passes.

Failures say what to fix

Every check carries written feedback naming the change and where to make it, not just "incorrect". A lab whose starter code already passes is rejected before it ships.

Curriculum alignment

ModuleCSTANGSSOntario
00 Set Up2-CS-01, 2-CS-02MS-ETS1-1n/a
01 Joints & Angles2-AP-11, 2-AP-13MS-ETS1-2ICS2O B1
02 The Gripper2-AP-14, 3A-AP-17MS-PS3-1ICS2O B2, TEJ2O A2
03 Pick & Place3A-AP-14, 3A-AP-16MS-ETS1-3ICS3U B2, B3
04 Coordinates & IK3B-AP-11, 3A-AP-18HS-ETS1-2, HS-PS2-1MCR3U A1, ICS3U B3
05 Sensing3A-CS-02, 3A-AP-13HS-ETS1-3TEJ3M B1, ICS3U C1
06 Automation3B-AP-12, 3B-AP-14HS-ETS1-4ICS4U B1, B2
07 Capstone3B-AP-21, 3B-AP-23HS-ETS1-2ICS4U C2, TEJ4M A3

Module 4 is worth showing a maths department: atan2, acos and the law of cosines land squarely in MCR3U, and here they have a job to do rather than a worksheet to fill.

Start with the free module

Module 0's first lab is open to everyone, no account needed. It runs in the simulator, so you can try it before an arm exists on your desk.