Computer Science in Middle School

This quar­ter I vol­un­teered to be a teach­ing assis­tant in Jeff’s “Cre­ate a Pong Game in Python” course. The class was designed to give mid­dle school stu­dents an intro to com­puter pro­gram­ming in Python. Jeff pro­grammed a code to han­dle the GUI and had the stu­dents import that code so they could more eas­ily cre­ate their pong game. The course was set up in four main parts. The first part was to cre­ate the board. The sec­ond part was to make the ball move over time using a while loop. The third part was to make the pad­dles move with user input (Jeff pro­grammed a getkey method to make this part a lit­tle eas­ier). The last part was to make the ball bounce off of the walls and the pad­dles. This project was admit­tedly a lit­tle ambi­tious, but I think over­all it worked out well.

I think what sep­a­rates this project from most of the oth­ers in this class was that it was was com­puter sci­ence in a mid­dle school. Prior to vol­un­teer­ing for this course, my only expe­ri­ence with teach­ing has been tutor­ing at Shore­line Com­mu­nity Col­lege for 2 years. I was very sur­prised to see how excited the stu­dents were to learn about pro­gram­ming, and they seemed to get through the first cou­ple of labs pretty eas­ily. My first week there, they imme­di­ately asked me, “Are you Justin Bieber?” It’s debat­able to whether or not I actu­ally look like Justin Bieber, but I soon learned that this was in good spirit. None of the stu­dents seemed to be intim­i­dated to ask for help, and there was only one iso­lated inci­dent where a stu­dent hid in the bath­room to get out of doing the class material.

What really sur­prised me was how eas­ily the stu­dents picked up abstrac­tion. I think Jeff’s approach of abstrac­tion first really worked out. Most of the ques­tions I got had to do with declar­ing vari­ables, how to cre­ate the bounc­ing algo­rithm, and sim­ply “why doesn’t my pro­gram work?” I think it was really dif­fi­cult for these stu­dents to think algo­rith­mi­cally when they were just start­ing to learn alge­bra. That being said, it turned out to be really frus­trat­ing for the stu­dents to do this part of the course.

In the last week I was there, the stu­dents almost all had their hands up ask­ing ques­tions at all times of the class. It was hard for me to iden­tify the prob­lems in their code because they had not yet learned to orga­nize their code and it was all over the place. The ques­tion I would get most often was, “Why doesn’t my ball bounce?” And it’s pretty hard to jump into a wall of text look­ing for just that. I noticed that when stu­dents would get stuck, they sat around wait­ing for Jeff or me to come help them, and would play flash games on the inter­net as they waited. The stu­dents would turn off the games when asked, but it was just patch­ing a big­ger problem.

Another issue was that every­one learned at a dif­fer­ent pace, and they were all in dif­fer­ent parts of the course. This made it hard for Jeff to lec­ture, since some stu­dents would not pay atten­tion because they were either past the part Jeff was lec­tur­ing about, or they had not caught up yet. Because every­one was at their own pace, it made it hard to keep the courses con­sis­tent. I vol­un­teered once a week for three weeks, and every week it got more hec­tic. When I talked to Jeff, he agreed with me that it was a bit hec­tic, and he believed that the stu­dents were start­ing to ask ques­tions just for answers, rather than to learn the mate­r­ial. He sug­gested another IDE would have been a bet­ter choice, or per­haps an inter­ac­tive sys­tem to point out com­mon errors as they code.

Over­all, the class learned a lot more than I expected they would. It was really sur­pris­ing to see a mid­dle school so focused on learn­ing com­puter sci­ence, and how eas­ily they picked up ideas like abstrac­tion. As for me, it was a really inter­est­ing expe­ri­ence. Hav­ing only tutored math to adults, tutor­ing com­puter sci­ence to mid­dle school­ers was a whole new expe­ri­ence. I feel as though math is very sys­tem­atic, which makes it easy to tutor. There’s one or two ways to solve every prob­lem. Com­puter sci­ence allows for a lot more flex­i­bil­ity on how to approach a prob­lem, and because of that, it was harder for me to jump into the mid­dle of a prob­lem and teach it. Teach­ing com­puter sci­ence to a mid­dle school class­room is def­i­nitely pos­si­ble, it just has a few kinks to work out.