The Bootstrap Blog
When Kids Just Want to Learn a Lot of CS
This blog post is shared by Paul Wolf, a high school teacher from Arkansas.
As a teacher, I love to pass the joy of building interactive games out of simple parts on to my students. One of my earliest memories is watching my dad program his state-of-the-art TRS-80, and as a middle schooler I would spend hours trying to make funny programs using QBASIC with my cousins at Thanksgiving.
In the fall semester of 2024, my high school Programming 1 students designed and built video games in Pyret using the design methods taught in the Bootstrap:Reactive materials, Bootstrap:Data Science, exercises in A Data-Centric Introduction to Computing and the Brown Computing Foundations: Data course. By the end everyone had a game that matched their creative vision, and some had a newfound enjoyment and interest in programming.
I am honored with the opportunity to share our process and results with you here. It is my hope that readers will take our work and run with it. If you are like me and want to skip to the goods, here are the files. Like the authors of DCIC, I kept many of the errors for the benefit of the reader.
How the Project Came About
The seeds of our project were planted when one of my intrepid coders wanted to make a row of stars for their Reactive Flag Project. I asked about this in the forums and Dr. Emmanuel Schanzer responded with this bit of code:
My student ran with it and created this Naval Academy flag:
I again reached out to Dr. Schanzer for more ideas when I saw that we would have time to go beyond those lessons (our school is on 90-minute, 18-week long blocks). Over the phone he explained the deeper ideas that underpin Pyret and the curricula that go along with it, and he encouraged me to explore the craziest ideas for programs that me or my students might come up with. I decided to move on to some of the Data Science lessons and double back to video games once they were ready to use lists.
I made some tasks out of the DCIC exercises and CS0111 assignments as well.
How the Project Flowed
I had my students spend a good amount of time thinking about their games and the needed data structures in collaborative coding groups. We did
daily random seating all semester to keep the ideas flowing. Right before fall break and our Data Science excursion, I told them we were going to go beyond
Ninja Cat and had them begin brainstorming possible games.
You can see the results of that work here.
When It came time to begin working on the games in full, I used the
Spring 2023 Duck Maze task structure to plan the flow. I used a spreadsheet to keep track of everyone's progress, and had everyone answer questions and post updated code links to their own
Google slide deck.
Like the Bootstrap assignments, I gave them the needed code when I felt they had done enough of the design work on their own. Some needed starter code to fill in. Others worked on their own once the basic structures were built, and I mostly served as a guide.
The variety of programs meant lots of coding on my part--luckily the deeper you go in Pyret the more fun and rewarding it is!
The Programs
Here are some of the highlights:
- Pong - This student made some fun additions to Pong.
- Ninja Cat Variants - Here are some games that took the spirit of Ninja Cat in novel directions:
- Flappy Bird Sky and City
- Drift Game
- Evade/Attack
- Tiramisu Ticker - This is a take on Cookie Clicker. This was a fun exercise in thinking about data structures.
- Del Sol Launcher - I enjoyed helping with this one because it gave me a chance to practice the stuff I learned years ago with VPython in a function-based context. I used the Bootstrap: Physics stuff as a reference.
- Pac-Man - This team really took Duck Maze and ran with it. I had them use my dad's approach to having defenders chase a running back on his DIY football game for their ghosts' movements.
- Loteria - This was probably the most complex game for me to take on. Once we finally set up the tables, lists, states and functions, my student was able to put them together themselves to make everything run.
- Snake - This one was my absolute favorite thing to code. My implementation for building the tail and moving it with ticks actually came to me in a meditation session. I highly suggest trying it on your own! You can find some hints in the “Handouts and Slides” section.
Student Feedback Highlights
On how they would describe this class to a friend:
- “This class was very fun because we got the chance to create a game of our choice which presented a great learning experience.”
- “The class will be very confusing at first, but by the end of the project it would make much more sense. It is about failing, changing the code until it succeeds.”
- “[This class involves] learning how to think like a programmer using a simpler coding language.”
- “I would describe this class as a good chill class that you can learn new things in and a class that is worth taking.”
On whether they would recommend it to a friend:
- “If computer science is something you want to explore, for sure take the class, just to get an idea. Even if you aren't sure about exploring computer science, it is a good course to understand the basics and see if it is something for you.”
- “Yes, if you enjoy a more chill class, as well as a hands-on learning experience then this is [a] class for you.”
- “I would say so. It may not [utilize] as useful coding software such as python or java, but it is still very useful for learning the basics of coding. It is great for getting someone into coding.”
- I would recommend this class to a friend because it is something new and you learn to program
On what they learned about coding and themselves:
- “Computer science is pretty complex as it involves various functions and inputs that sometimes you yourself will need to create. It can be a lot of work, but everyone starts with the basics, so it's ok.”
- “It has quite a few different things you have to memorize, but learning the basics of coding was extremely helpful and may have sparked an interest in computer science.”
- “I have a new appreciation and respect for coders.”
- “[I] can overcome hard challenges”
- “The time you take to make a code is worth the results.”
- “I learned that I do enjoy certain aspects of coding, and it is actually pretty fun.”
- “I can in fact become more angry at a computer”
- “Sometimes I just need to take a step back and take a break to be able to find the bugs in my code. I also learned how to take constructive criticism well.”
- “The most valuable thing that I learned about myself is that I can do something if [I] really put my mind to it.”
Posted January 7th, 2035