CS Teacher looking for advice

This is my second year of using the GoPiGo to take my students beyond using the turtle module in Python. Their assignment is to build an obstacle avoidance AI. I scatter the students’ backpacks in the front of the computer lab. Students must build upon my initial GoPiGo object and implement an algorithm that will get the car from one side of the room to the other without touching a backpack.

We had a lot of problems last year. We never quite figured out encoders. The WiFi issues with the RasPi2 were agonizing. But this year we’ve got some upgrades and I’m trying to get more students to the finish line. While I welcome all sorts of suggestions, here are my most pressing questions:

1. How can I check code before deploying?

Is there any way to run unit tests locally without having to deploy code to the Raspberry Pi? I’d really like to mimic a professional environment as much as possible. Any way I can run a sort of virtual GoPiGo so students can evaluate code before a live test?

2. How should students build off of my code?

This year I’m trying something new by having my students create their own child class. That way I can continue to build helpful methods to scaffold the project for students that are struggling. I can continue to add helpful methods. Does it look like a manageable approach? Any suggestions?

3. What's the easiest way to deploy code?

Presently students are using PyCharm CE and then pushing changes to a GitHub repo using the IDE. Students will then use PuTTy on their school computer to SSH into the GoPiGo and pull the updated code, then run python3 student.py

4. Is this approach teaching proper form?

I’m always interested in finding new ways to include typical standard operating procedures and best practices. I’m also trying to study and implement Python3-style solutions. Any suggestions on how to include more efficient and effective practices into this project would be appreciated.

5. What's next from here? MQTT? Google Cloud Vision?

I have a handful of students that are incredibly advanced for their age. They will quickly master the challenge. For these students, I’d like to give them a rigorous challenge that will contribute to the overall project. I could get them to use Mosquito and MQTT to aggregate data from all of the GoPiGo’s. I was also thinking of getting the advanced students’ GoPiGos a camera and asking they use vision recognition. Any thoughts?

Hello adilettad,
what you’re doing sounds fantastic! I was waiting a bit to see if another teacher would pipe in. I have yet to teach object-oriented python and I may not be the best person to give you advice. (I teach lower ages, or more beginner classes) What grades are you teaching? They sound pretty advanced!

I personally think you’re deploying code the right way. Into Github and out of github! Any other method I would personally consider as inferior. Other programmers will see it in a different light of course. By going through Github, your students leave traces that you can evaluate, plus they get version control. You could transfer directly from dev machine to the Pi, with either Filezilla or using samba but you’d lose the history.

We don’t have a virtual GoPiGo and none is currently planned.

I’ll try to see if some of the higher level teachers can come and give you some feedback too.