Teaching Python at STEAM Series

On Saturday, I taught my first programming class ever, at a STEAM workshop at Santa Clara University that was put on by WRRF. I really enjoyed teaching others how to program in Python, and all of the students at the class were quite engaged.

When I committed to teaching this class with less than a week's notice, I had no idea where to start with the curriculum. What would students with no prior experience in programming learn from just a 90 minute preview? After I consulted with Paul and realized that he had an array of ideas on what I could teach, I brought him on board to help me teach the curriculum. I also invited Donovan to co-teach the class with me.

After the three of us had our first discussion, I realized that there was no way the students would emerge from the class being Python experts. A successful class would mean that they would have a basic knowledge of Python fundamentals. The students would have enough knowledge of Python, and enough motivation, to continue learning Python on their own. In other words, they would be equipped to teach themselves after a 90 minute introduction.

With this goal in mind, the three of us got to work preparing our curriculum. We wanted to make the class as engaging as possible, which meant that it couldn't be us simply lecturing them for 90 minutes. Yet at the same time, they would need an introduction before we could expect them to write code on their own. We knew that it would feel interactive if they could type along with us and see the results right in front of them. We chose to use repl.it, an online Python IDE and REPL, to teach the concepts, followed by CodingBat exercises where they could practice their skills and gain confidence.

We knew that a practice session would be extremely valuable preparation for us, so on Thursday during C&C, we invited some friends to join us. The first problem with our simulation was that all of our "beginners" already knew Python, or had at least some programming experience. Additionally, Donovan and I spent a long time trying to figure out what to do next, which meant there was a significant amount of down-time. Finally, the class didn't feel interactive at all, as most of the students were extremely silent, and didn't seem engaged. This practice run proved to be extremely valuable, and we made a number of major changes to our curriculum.

When it was time for us to teach the actual class, we knew exactly what we were going to do. We began with simple exercises to teach the students basic concepts including comments, variables, types, functions, conditionals, and loops. For each of these, we first provided a few examples (the one-liners in the REPL and the multi-line in the IDE). For each concept, we showed them some code and asked them to guess what it might do. After this, we showed them a more complicated program, one that included all of the concepts that they had learned in the previous hour. Finally, for the last half hour, we had them solve CodingBat exercises on their own, and Donovan and I walked around helping them out.

In my opinion, the actual class went about 10x better than the practice one. For starters, all of the students were engaged, and even asked some questions that Donovan and I had to think about or didn't know the answers to; the level of questions showed how well they were grasping the material. For example, they asked what would happen if a string was passed into a program that was expecting an integer input, and we ended up going off on a tangent to explain how try catch statements worked. During the CodingBat period, although we intended to walk them through the exercises, everyone began working ahead and solving them on their own. Because everyone worked at different paces, this turned out to be very effective, and Donovan and I walked around helping people out whenever they got stuck or offering tips on how to improve their code.

Overall, I had a great first experience teaching programming to other students, and this curriculum seemed to resonate well with varying levels of students. I would love to expand the curriculum and continue teaching programming to students in the future.

Comments

  1. Borgata Hotel Casino & Spa - JTR Hub
    Located in Atlantic City, Borgata Hotel Casino 바카라 & Spa offers the finest in amenities and poormansguidetocasinogambling entertainment. 1xbet app It also www.jtmhub.com provides a wooricasinos.info seasonal outdoor swimming

    ReplyDelete

Post a Comment

Popular posts from this blog

AgentSim: Rationale and Goals

Positronics – Day 1