My Experience at Roosevelt High School

This past quar­ter, I vol­un­teered in Mr. Davidson’s AP Com­puter Sci­ence class at Roo­sevelt High School dur­ing the class period twice a week. The school’s first lunch period imme­di­ately fol­lowed the class so I often stayed for that time to inter­act with those stu­dents who chose to spend their lunch period in Mr. Davidson’s room. Among those stu­dents was a guy who I shall refer to as Dave. I first noticed him on my first day in the class­room while Mr. David­son was tak­ing a cen­sus of everyone’s progress on their cur­rent pro­gram­ming project. Dave quickly blurted out that he had already fin­ished it last week, which was then fol­lowed by groans from sev­eral other stu­dents. Soon, it became appar­ent that Dave was con­fi­dent in his abil­i­ties as a pro­gram­mer and wanted oth­ers to know it. He proved to be an inter­est­ing per­son, which moti­vated me to inter­view him.

Dave’s rea­son for being in the APCS class was pretty shal­low. He was there to earn credit for the AP course and tak­ing the class pro­vided a way for him to study for the exam. When asked if there were any other rea­sons, he said he took the course because he had always been inter­ested in com­put­ers. He found them eas­ier to under­stand and more log­i­cal to deal with than peo­ple. For him, this was a very com­fort­ing notion. I pressed a lit­tle fur­ther about why he was inter­ested in com­put­ers. As it turns out, Dave has a nat­ural curios­ity for how things work. When he was younger, he enjoyed tak­ing apart clocks and study­ing how their gears inter-operated. His focus quickly changed when he was intro­duced to com­put­ers. He likes learn­ing about how com­put­ers work and pro­gram­ming pro­vides a good way to under­stand an impor­tant aspect of com­put­ing. Next, we delved deeper into Dave’s pre­vi­ous expe­ri­ences before he entered the course.

With respect to learn­ing Java, Dave’s first expe­ri­ence came from his uncle, who is a Java devel­oper. Because of his curios­ity, Dave often asked his uncle ques­tions about com­put­ers so one sum­mer a few years ago, his uncle decided to teach him Java. Together, they worked their way through the Build­ing Java Pro­grams text book. By the time Dave entered the APCS course, he already had an advan­tage over the other stu­dents. This cer­tainly explained why he often fin­ished his project early. But his prior expe­ri­ence doesn’t stop there.

See­ing as how he already had a good amount of expo­sure to com­puter sci­ence and pro­gram­ming, I asked him if his per­cep­tions were changed in any way as a result of tak­ing APCS. The short answer was no. Com­puter sci­ence remained a very inter­est­ing topic for him. How­ever, the class did change his social per­cep­tions of the com­puter sci­ence field. Before, he hated col­lab­o­rat­ing with other peo­ple on cod­ing projects, but because of APCS, he came to cope with that fact. This is largely due to Mr. Davidson’s efforts. He rec­og­nized that Dave did not work well with oth­ers and often forced Dave to main­tain some min­i­mal level of inter­ac­tion with other stu­dents. Dave also men­tioned that APCS forced him to improve his cod­ing style because now it counted for style points. Next, we talked about Dave’s plans for later on.

In the near future, Dave plans on tak­ing the com­puter sci­ence projects course offered at Roo­sevelt next year. The class is for stu­dents with pro­gram­ming expe­ri­ence, builds on com­puter sci­ence top­ics already cov­ered in APCS, and allows stu­dents to pur­sue their own projects. But beyond that Dave does not see much oppor­tu­nity for him to take more com­puter sci­ence courses are Roo­sevelt because he does not have the room in his sched­ule for more classes. Fur­ther down the line, Dave def­i­nitely plans on major­ing in com­puter sci­ence when he reaches col­lege. Out­side of for­mal classes, he also has some ideas of other things he could do apply and expand his knowledge.

His main goal will be to do more pro­gram­ming projects. Many of these projects will come from the teach­ers at Roo­sevelt. Dur­ing the school year, he already had suc­cess devel­op­ing a raf­fle pro­gram for the prin­ci­pal to use dur­ing spe­cial events. Next up on his list is a “Pi trainer” appli­ca­tion com­mis­sioned by his math teacher. The teacher wants a pro­gram to allow stu­dents to enter as many dig­its of Pi as they can remem­ber and then val­i­date the input. And all these projects will undoubt­edly involve some kind of graph­i­cal user interface.

Among all the top­ics that Dave has learned so far, user inter­faces have been the most inter­est­ing. He likes them because they become a visual and beau­ti­ful rep­re­sen­ta­tion of his work. I have also noticed he enjoys doing the inter­face cod­ing on this own instead of using some visually-oriented tool to help. Part of the rea­son is because he likes to know every detail about what is going on and the other part is that he does not want to learn these other frameworks.

Finally, I asked him about any advice he might have for some­one who wants to teach youths com­puter sci­ence or pro­gram­ming. He told me that his uncle always knew what not to say. In other words, avoid jump­ing into detailed expla­na­tions right away. One should keep the level of dis­cus­sion as sim­ple as pos­si­ble so as to avoid mak­ing peo­ple con­fused. He also men­tioned that start­ing out by using Eclipse was use­ful. Eclipse allowed him to quickly view the Java doc­u­men­ta­tion, which helped him learn the lan­guage bet­ter because he could eas­ily explore the options avail­able to him.

This inter­view was a great oppor­tu­nity to under­stand Dave a lit­tle bet­ter. My prior expe­ri­ences showed me that he was an intel­li­gent per­son, but a lit­tle too will­ing to show off his tal­ents. I some­times observed him inter­ject him­self into con­ver­sa­tions Mr. David­son was hav­ing with other stu­dents about a design issue to sug­gest some­thing Dave thought would be bet­ter. Mr. David­son char­ac­ter­ized Dave as some­one who liked to think about all the pos­si­bil­i­ties when he designed his projects. Indeed, he some­times asked me about eso­teric fea­tures that he could include in his projects. For instance, he con­sid­ered adding an inter­face for binary and hexa­dec­i­mal num­bers into his raf­fle pro­gram. When time starts becom­ing an issue, he’ll prob­a­bly need to learn how to focus his efforts. But in the mean­time, I think that’s indica­tive of his healthy curios­ity. He’s will­ing to go that extra mile to imple­ment some­thing just because he can instead of set­tling for the minimum.

Over­all, it was a plea­sure to work with Dave. My sug­ges­tions for work­ing with a stu­dent like him are to be patient because of his ten­den­cies to show off and be pre­pared to answer many ques­tions. Work­ing in the class­room, it was also great to see everyone’s pas­sion for cod­ing. For their final projects, many of them are attempt­ing to cre­ate pro­grams that are quite ambi­tious – things that I wouldn’t try myself if I were at their level. See­ing that, it has rekin­dled my own spark for cod­ing, which had been dulled by the del­uge of school cod­ing projects in the past cou­ple of years. Vol­un­teer­ing was def­i­nitely a worth­while experience.

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.