Promoting Engineering to Elementary Schoolkids
Olinder, Bilingual Education and TFA
A close friend of mine (Mariaesther) from Stanford is teaching bilingual Spanish at Olinder Elementary School, as part of the TFA program. Olinder is a state school in a disadvantaged district; many of the students and parents are first-gen Americans and it is common for students to be learning English as a second language.
In November 2019, I attended the Olinder career day tasked with presenting my job as a Software Engineer, and getting kids excited about college. As a product of the UK school system, bilingual education is quite a remarkable offering. Perhaps unsurprisingly, since it was part of Mexico until the 1840s, California has a strong history of bilingual teaching in English and Spanish. In 1998, California passed Prop. 227, which almost entirely eliminated bilingual instruction. Mariaesther teaches in one of the few remaining programs and teaches students in Spanish as they learn the basics, such as phonics, and prepare for their education in English.
While Mariaesther teaches the first and second grade, I would be talking to children from the whole elementary school. I am, unfortunately, not a Spanish speaker. Like most English schoolchildren, I was encouraged to learn French, a language which has surprisingly little utility in the USA. I knew that if I was going to engage these kids, I needed to provide something visual that would get them excited about engineering and higher education.
Previous Projects
Here are a couple of the ideas that I explored while ideating about what to present to the kids.
Scratch and visual programming languages
Scratch is one of many attempts at producing a visual programming language. Students of Scratch are encouraged to solve problems
by constructing algorithms out of blocks
that resemble flowchart elements. The algorithm is executed as it steps through the
flowchart, evaluating conditionals and mutating variables. This would make a great starting point if I had a few hours to sit down
with a small group and give one-on-one help, but I was giving a flash presentation and hoping to make an impression quickly. Scratch
would have to wait.
Python Turtle
In computer graphics, turtle graphics are vector graphics using a relative cursor (the “turtle”) upon a Cartesian plane. Turtle graphics is a key feature of the Logo programming language.
– Wikipedia
While I didn’t learn to program with turtle graphics (I started by building calculators with my mum in Visual Basic), I did encounter them very early in my programming journey. There’s something enchanting about commanding the turtle to create complex “spiralogram”-like shapes with a single loop and a couple of variables. I looked into the turtle for a while, and assembled some toy functions that would write a students name in block capitals after prompting for some input, and could draw the Sierpinski triangle.
However, Mariaesther reminded me that the paradigm of having your name appear on a screen was not particularly inspirational, and that the transcendant beauty of the Sierpinski would likely be lost on children.
Robotics
While many children at Olinder have played with iPads and other visual digital devices, Mariaesther thought it unlikely that many of them had any experience with robotics. I was gripped by TV shows like Robot Wars as a kid, so this seemed like a better jumping off point for young children into the world of engineering.
The BranchioGraph
Earlier that week I had seen a Hacker News article about the Branchiograph. This extremely well documented project guides you through producing a cheap CNC pen-plotter. A pen-plotter guides a pen (which can be lifted and dropped to turn it “on/off”) over a vector image representation that you provide. The BranchioGraph looked like the perfect project to demo to the kids; the materials were inexpensive, assembly required little robotics knowledge, and I already owned the most expensive part (the Raspberry Pi).
I ran down to a Fry’s Electronics and bought three servo motors. Unfortunately, the cheapest that I could find in-store were ~$14 each, but I didn’t have time to wait for delivery from an online store. I already had a breadboard, raspberry pi and the jump cables that I needed to assemble the project.
Assembly was quick and easy. Direct connection from OSX to RPi without a shared router is possible by configuring some settings on your OSX machine, this tutorial explains how. I downloaded the python package provided by the BranchioGraph author and watched my pen-plotter spring into action. It swung around crazily, and managed to spasm so violently that the arm unplugged itself from the RPi.
I realized my mistake quickly - I had bought the wrong kind of servo motor. In the guide, he explicitly points out that there are two kinds of servo: fixed and continuous. With fixed servo motors, you control the position via pulse-width. With continuous servo motors, you control the speed and direction via pulse-width. I had bought continuous servos, when I need fixed. I had actually tried to be careful of this while buying, but I guess I had misread the online spec sheet for the part I ended up buying. Horrified, I tried to modify the code to make small incremental adjustments to the pen position, but while attempting to do so, I noticed that the RPi was dropping connections to the OSX host regularly, and the python script controlling the arm would regularly die.
Here, I learned my second mistake. The RPi was not capable of providing enough current to sustain the three servos, which were more powerful than the ones specified in the guide. The BranchioGraph dream was dead, but I was due to present to the kids in a couple of days, and I didn’t have time to buy new components.
Presenting to the Kids
I took my broken arm to Olinder, and set up my table. They kindly provided me with an extension cable, so I had power for my OSX host and RPi. Even though I used to be one, I do not consider myself gifted with kids. The kids were taken around the different presenters in groups of ~20, I tried to explain to my first group that I made apps; the kind of apps that they use on their parents iPads, or they’ve seen on their parents phones. I saw some nods of recognition, but felt that software was a bridge too far for elementary schoolkids with mixed english ability. I decided on a different tack, and my script for the following groups was something like:
Hi kids! I’m George. I’m an engineer. That means it’s my job to build things. Who likes to build things?
(A cheer from the crowd.)
It’s also my job to break things! Who likes to break things?
(A raucous cheer from the crowd.)
To become an engineer, you need to go to college (white lie). Who wants to go to college?
(Another cheer. I was very impressed by the value put on higher education at Olinder.)
After that ice breaker, I would make some general commentary about how building things helped people, and how I liked to build things for sick people. I told them that engineers need to learn how things work, and that often involves breaking stuff (see chaos engineering).
I would then ask them if they wanted to see something cool that I had made just for them. This would, without fail, recieve the loudest cheer. I would get them huddled around the table with the arm, and before I even made it move, they were transfixed and asking questions. When I made the arm spin, or dance around, they would invariably start hollering. A few kids came up to me after my little speech, and told me that they wanted to be engineers. One little girl told me that she really liked math.
Afterward
I found the experience of presenting immensely gratifying. Mariaesther gave me some feedback; I was too earnest in my presentation style. I needed to loosen up and connect with the kids more personally. I took that feedback on board; to be honest, I think I default to being earnest when I’m nervous. Next time, I’ll hopefully be a little less uptight.
Servo Car
I wasn’t entirely satisfied with the finished product, even though I was very happy with how my presentation went to the kids. I scrapped the useless pen plotter, and took stock of my parts. I had a working connection from my laptop to some speed-controlled servos. I decided to take it back to Robot Wars, and use the servos to construct a little car. I cut apart a cardboard box to form both the chassis and the wheels, and performed some surgery on a ballpoint pen to create the axle.
I’m currently coordinating with Mariaesther to go back and show the kids the car. I’m also talking with her about sitting down with some of the more interested kids for longer, and showing them some more advanced software-related things, like Scratch.
Lessons
Here’s what I learnt from the experience:
- Exposure to robotics is unusual, especially amongst kids from low-income backgrounds. Simple robotics components, like servos, are a great introduction for kids to engineering.
- The resources required to get kids excited about engineering are extremely inexpensive. I spent ~$50, but I could’ve spent less if I’d started earlier.
- Try to relax. Kids forget things quickly, and they’re just excited that you’re there. Keep your authority, but remember to relate and be personable, just like you’re talking to an adult.
- Electronics and programming have some overlap, but don’t forget how little you know. Follow the guide, don’t impulse buy servos.
Citations
[1] Montaño, Theresa, et al. “The DEbilingualization of California’s Prospective Bilingual Teachers.” Social Justice, vol. 32, no. 3 (101), 2005, pp. 103–121. JSTOR, www.jstor.org/stable/29768324. Accessed 27 Jan. 2020.