TL;DR Learning Python is applicable to many academic and professional roles.
See: The Top Programming Languages 2023 - IEEE Spectrum
I’ve been teaching summer robotic camps for high school students for about 6 years. These are mostly students with no programming experience, but some do.
(These are not the robotics club kids – they don’t need this camp. But some of my students might join their high school robotics clubs after this camp.)
My goal is to introduce students to computer science and electrical engineering, and STEAM in general. I am certain that many students are interested in playing with things that move, make noise, light up, sense their environment, display interesting behavior, etc. and are motivated to learn to code.
Some/most of these students might not be interested in a high school programming class that they perceive as boring or too academic.
I also seek students who are represented across the demographic of their high school. Getting better, but not there yet.
I am most interested in what students do after the camp. I want them to continue to use their robot platform on their own, perhaps as part of school projects. (Of course, the “robot” platform can be used for many non-robotic projects.)
I have taught with:
- Sparkfun RedBot - Arduino
- Sphero RVR - visual programming
- Petoi Bittle - visual programming; emphasis on quadruped poses and gaits
The RedBot with Arduino has had the best results, but I need a longer camp session to get into the real Arduino programming. One week is tough.
While Arduino is popular (duh!), and it is mostly C/C++ like, “real” projects don’t use Arduino code. (It’s unlikely that a person interviewing for a software engineering job would be asked about their Arduino experience.)
And, of course, it’s easy to add hardware and libraries to the Arduino enviroment.
With XPR, I had hoped to use XPRCode/Blockly as a gentle introduction, but always have students inspect and understand the generated Python. Then, move onto coding directly in Python, perhaps using XPRCode as an assistant.
I’d also like to enable students to add more hardware (addressable LEDs, I2C OLED displays, sound) to the XPR so they understand that what they are learning applies to other physical computing endeavors.
I made this post after I started working on my curriculum and wanted to design a simple “Hello, World” exercise. Blinking the LED, of course. Something to do before we assemble the robot hardware – just the Pico board.
But, the tiny LED on the Pico is not all that fun. So, I thought I’d add a large LED, connect it to the “Extra” connector, 3D print some sort of mount to attach to the XPR. Include some art exercise to create a personalized illuminated badge.
However … I was surprised to find that XPRCode does not include a block to turn on/off a specified output pin. Huh. I should have taken a closer look before I committed to ordering 40 XPR kits for my camps!
So, plan B will cause me to jump into Python coding on the very first exercise.
Maybe that will work out. Maybe it will scare away some of the students.
Or, even better, I learn how to help extend XPRCode and XPRLib to add some more blocks to support add-on hardware. Willing to collaborate and help!
- Wayne Seltzer
University of Colorado, Boulder
ATLAS Institute - Assistant Professor
CU Science Discovery - Instructor