Get the Syllabus here.

Introduction to Robotics

A two-week intensive course on programming, design thinking, and robotics


In Introduction to Robotics, you will construct artificial bodies and instill them with rudimentary senses and decision making capabilities. In doing so, you will develop a familiarity with procedural and object-oriented programming, programmable microprocessors, and mechanical/electrical engineering, as well as the mental rigour required to better understand and internalize the way in which computers “think.” You will be exposed to media exploring the ethics, philosophy, and theory of artificial intelligence and cognition, and compile a portfolio and active media stream reflecting your insights and accomplishments.


Media: Where am I?, The Songs of Eden, I, Robot, Pygmalian, Mechanical Turk, Do Androids Dream of Electric Sheep?

Programming Languages: Blockly/Scratch/mBlock, Javascript, Arduino

Textbook: A Gentle Introduction to Robotics, Getting Started with mBot 

Materials: mBot, assorted electronics


Week 1: Mindless Bodies, Disembodied Minds

In which we isolate the processors and actuators that form a robotic system, and explore them in turn, and create a vaguely lifelike artificial form.


Day 1: Intro, Discussion, Set up online community, BristleBot

Day 2: Blockly II. Spinner Design I

Day 3: What is Intelligence? Blockly III. mBot I. Intro to AI.

Day 4: What is the Self? Sensors. mBot II: hearing, singing

Day 5: What is Life? Conway’s Life, State Machines. mBot III: expression


Week 2: Mediocre Bots

In which we combine sensors, processors, and actuators to create robots that are pretty OK at doing something.


Day 6: Why Robots? Robots and Design.  mBot IV: line following

Day 7: mBot V: obstacle avoidance

Day 8: mBot VI: mazeBot

Day 9: mBot VII: spinnerBot, sumoBot

Day 10: ‘Aluminum Man’ competition, commencement.



1 Day Project: BristleBot

This is a simple robot made out of a battery and motor glued to a toothbrush head. It’s an introduction to electrical and mechanical engineering that provides perspective on what constitutes a body, trains a critical eye on the repurposing of materials, and instills a sense of how little is required to create a feeling of empathy with artificial life forms.

TAs can facilitate by overseeing the deconstruction of toothbrushes, soldering/taping of electrical components, and helping students avoid gluing themselves to others.

Ambitious students can experiment with aesthetic additions to increase the BristleBot’s charisma, pruning of bristles to change its mobility, or create additional BristleBots to add to the menagerie.

The activity will conclude with a BristleBot race, an exercise in futile mayhem.


Multi-day Project: mBot

This robot will serve as students’ introduction to mobile bots with sensors and onboard processors. They will use off the shelf electronics to create a robot body, equip it with light sensors, and program a microprocessor to drive the motors based on sensor input. The result is a bot that can roll around, seeking or avoiding light sources, following lines, and solving mazes.



Featured post

Assignment 8: Research Project

Choose one of the sensors or actuators on the mBot and write a post describing how it works. What are its features, requirements, and limitations?

  • Ultrasonic Sensor
  • Line Sensor
  • Motor
  • Light Detector
  • LED
  • Buzzer
  • WiFi Module

Give a 5 minute presentation on your research and upload your presentation materials to your blog.

Assignment 7: SumoBot

For the final challenge of class, we will program our mBots to do battle in the SumoBot arena!

Here are the rules and specs:

  1. The arena will be a circle drawn in tape, about 66cm in diameter.
  2. The mBots must have a protective “bumper” in front to prevent damage to the line follower module.
  3. If a bot leaves or is pushed out of the arena (at least one wheel over the line) the opponent wins.
  4. A successful “charge” (robot accelerates and strikes opponent) scores 1 point.
  5. Rounds last 60 seconds or until ring out. A robot that moves after the round loses a point.
  6. In lieu of a ring-out, the robot with the most points wins.
  7. The winner of the previous obstacle course challenge receives a buy in the first round.

Reading 3: The Mechanical Turk

The Mechanical Turk was a chess playing curio of the 1700s. This automaton could beat the greatest chess players of the courts of Europe, exhibiting astonishingly lifelike behavior. At the time, none could discover its secret…a little person hiding inside the contraption, operating the controls.

Thus the Mechanical Turk was an early example of “artificial-artificial intelligence.”

Enter Amazon’s Mechanical Turk service of today. This allows users to submit a task which can be performed by a human with relative ease but which still challenges AI, such as image or affect classification. Tens, hundreds, or thousands of workers perform this task in parallel, thus returning the results very quickly to the user.

How does Amazon’s mechanical turk parallel the original? How does this story inform our understanding of AI today?

Assignment 6: LineBot

In which we use the various sensors of our mBot to navigate a deviously challenging obstacle course.

The main sensor we rely on is the downward-facing line sensor. This allows us to detect a black mark on the ground, and since there are two sensors built in to the mBot, we can tell whether we are to the left or right of center, centered on the line, or off the line entirely.

We first brainstormed features of the obstacle course on the whiteboard…zig zags, right angle turns, curves, a bridge, a pillar, and walls. At times, the line disappears, and we must rely on other sensors (like the ultrasonic proximity sensor and the ambient light sensor) to navigate.

mbot maze.jpg

Programmed in mBlock (a version of Scratch for mBots), the robots needed a strategy robust and flexible enough to navigate each of the obstacles without human input. At the end of the course, they must detect the finish line and play a victory song.

The robot to complete the course in the shortest time wins!

Reading 2: Pygmalion

Read this ancient Greek myth about the sculptor who loved his statue so much, the gods gave it life.

What would it mean if a robot became “alive?”

Is it possible to love a robot?

Is it possible to be loved by a robot?

In Ovid’s Metamophoses, page 496.


Assignment 5: Ravebot 3.0

And now…we dance!

For your third iteration of Ravebot, let’s make it dance.

The ravebot should be able to move around in an enclosed environment, avoiding other bots and walls. If it gets too close, it should do a little wiggle dance and/or spin move, then turn around and move to another location.

Assignment 4: Ravebot 2.0

What’s a rave without music?

Let’s add some deep cuts.

To start, check out the chapter in A Gentle Intro… entitled “Play an Octave.” Once you’ve got that working, try to compose a song using that will play on the onboard buzzer (speaker). It can be a song of your own or you can try to reproduce an existing song.

Paul’s robot plays the Super Mario Theme:

Reading 1: Where Am I?

Where Am I is a thought experiment written by philosopher and cognitive scientist Daniel Dennet. It explores the notion of the self and where it resides…is it in the brain or the body? Both? Neither?

This reading is meant as an open question as to the nature of consciousness, one that will become more and more relevant as the complexity of our machines approach the refinement of the human mind.

Bonus media: Bladerunner Turing Test

Assignment 3: Ravebot

At long last we have unboxed the mBots. In order to verify correct installation of the mBlock IDE and arduino drivers, and to get practice programming in scratch and uploading code, we attempt to control the mCore board’s onboard LEDs to create a smoothly flashing, colorful display, thus lending a party-like atmosphere to the classroom.

Disclaimer: This is more of a fancy lightbulb than a robot per-se (there is no autonomous decision-making.)

Disclaimer: This will be more fun rave once we add sound and movement… 🙂

//ravebot pseudocode

//learning objective: learn about variables, control loops, and get used to uploading code to the mBot.

//goal: to create a light show, with the two onboard LEDs independently shifting through the color spectrum. The lights should change smoothly, without strobing.

//plan: each color should go up until 255, then go down until 0, then go up…etc.
//need to set each color to a different value initially

-variables for each color, RGB, different
-variables for each colors’ direction (dir1, dir2, dir3)

-check the values of each color, and if the value is 255, change the direction of that color to -1, if it’s 0, change the direction to 1.
-change the value of the color by its direction
-set the left led color
-set the right led color
//end loop

Blog at

Up ↑