This quarter I volunteered to be a teaching assistant in Jeff’s “Create a Pong Game in Python” course. The class was designed to give middle school students an intro to computer programming in Python. Jeff programmed a code to handle the GUI and had the students import that code so they could more easily create their pong game. The course was set up in four main parts. The first part was to create the board. The second part was to make the ball move over time using a while loop. The third part was to make the paddles move with user input (Jeff programmed a getkey method to make this part a little easier). The last part was to make the ball bounce off of the walls and the paddles. This project was admittedly a little ambitious, but I think overall it worked out well.
I think what separates this project from most of the others in this class was that it was was computer science in a middle school. Prior to volunteering for this course, my only experience with teaching has been tutoring at Shoreline Community College for 2 years. I was very surprised to see how excited the students were to learn about programming, and they seemed to get through the first couple of labs pretty easily. My first week there, they immediately asked me, “Are you Justin Bieber?” It’s debatable to whether or not I actually look like Justin Bieber, but I soon learned that this was in good spirit. None of the students seemed to be intimidated to ask for help, and there was only one isolated incident where a student hid in the bathroom to get out of doing the class material.
What really surprised me was how easily the students picked up abstraction. I think Jeff’s approach of abstraction first really worked out. Most of the questions I got had to do with declaring variables, how to create the bouncing algorithm, and simply “why doesn’t my program work?” I think it was really difficult for these students to think algorithmically when they were just starting to learn algebra. That being said, it turned out to be really frustrating for the students to do this part of the course.
In the last week I was there, the students almost all had their hands up asking questions at all times of the class. It was hard for me to identify the problems in their code because they had not yet learned to organize their code and it was all over the place. The question I would get most often was, “Why doesn’t my ball bounce?” And it’s pretty hard to jump into a wall of text looking for just that. I noticed that when students would get stuck, they sat around waiting for Jeff or me to come help them, and would play flash games on the internet as they waited. The students would turn off the games when asked, but it was just patching a bigger problem.
Another issue was that everyone learned at a different pace, and they were all in different parts of the course. This made it hard for Jeff to lecture, since some students would not pay attention because they were either past the part Jeff was lecturing about, or they had not caught up yet. Because everyone was at their own pace, it made it hard to keep the courses consistent. I volunteered once a week for three weeks, and every week it got more hectic. When I talked to Jeff, he agreed with me that it was a bit hectic, and he believed that the students were starting to ask questions just for answers, rather than to learn the material. He suggested another IDE would have been a better choice, or perhaps an interactive system to point out common errors as they code.
Overall, the class learned a lot more than I expected they would. It was really surprising to see a middle school so focused on learning computer science, and how easily they picked up ideas like abstraction. As for me, it was a really interesting experience. Having only tutored math to adults, tutoring computer science to middle schoolers was a whole new experience. I feel as though math is very systematic, which makes it easy to tutor. There’s one or two ways to solve every problem. Computer science allows for a lot more flexibility on how to approach a problem, and because of that, it was harder for me to jump into the middle of a problem and teach it. Teaching computer science to a middle school classroom is definitely possible, it just has a few kinks to work out.