Paly Python Summer Camps

July 2020
Paly Python Summer Camps

Image of Paly Python website, visit at palypython.com.

Read on Medium: https://rohanphanse.medium.com/paly-python-summer-camps-5e6433e3cd5c

Paly Python Summer Camps

Hello everyone, my name is Rohan Phanse and I am the founder and president of Paly Python, a programming club at Palo Alto High School. We just concluded our free programming summer camps for students - here's how they went.

First of all, let me give you some background information about Paly Python. It is a programming club at Palo Alto High School where people can learn popular languages such as Python and JS and reinforce their skills through challenges and events. I started Paly Python because I wanted to teach people to code and meet other programmers. Because we are a school club, the advent of COVID-19 caused us to shift our focus from school to online and that allowed us to broaden our target audience. Paly Python was one of the only school clubs to successfully make the transition online - most clubs shut down for the remainder of the year.

Now let's get to the summer camps. First of all, we decided to host free programming summer camps because it was a great opportunity for students to learn programming or improve their skills and a great opportunity for us to grow our club and gain teaching experience.

We hosted two summer camps - Learn Python from June 15–19 and Learn JS from June 22–26. Learn Python focused on learning the fundamentals of programming through Python, an interpreted, high-level language with straightforward syntax, perfect for teaching beginners. The Learn JS camp taught campers the basics of web-development, allowing them to harness the awesome power of HTML, CSS, and JS to create their own websites and games.

The camps were conducted online through our discord server and consisted of 2 hour voice calls each day. During these session, we explained the day's content through slides and allowed campers to practice what they learned through our challenge problems. Here's a look at the syllabus for each summer camp:

Learn Python (Jun 15–19)

  • Day 1: Basics & Data Structures
  • Day 2: Execution Flow & Libraries
  • Day 3: Functions and Classes
  • Day 4: Advanced Concepts
  • Day 5: Regex & Webscraping

Learn JS (Jun 22–26)

  • Day 1: Basics, Data Structures, & Conditional Logic
  • Day 2: Loops, Functions, and Math
  • Day 3: HTML & CSS
  • Day 4: Manipulating the DOM
  • Day 5: Asynchronous Programming

While the Paly Python team and I were building out the course material, we also started advertising our summer camps. Emailing teachers was not very successful but our technical specialist, Jerry Xia, hit the jackpot when he and his mom advertised the camps on WeChat to middle school and high school parents. The campers started rolling in after that - I suspect a lot of parents wanted their children to learn programming.

Overall, we had about 25–30 people sign up for one or more camps and actually attend, with a near even split of boys and girls (~40% and ~60% respectively). It was to great to see this much gender diversity, especially since our school club meetings had consisted primarily of boys. In addition, most people (~70%) signed up for both camps with the remainder either choosing Learn Python or Learn JS. Finally, the age range spanned from rising 5th & 6th graders to 11th graders, with the majority of campers being rising 8th, 9th, and 10th graders.

Now that the preparation was complete and the day had arrived, it was time for summer camp #1, Learn Python. At 9:55 am, five minutes before the start of the camp, a couple eager campers entered the discord voice call. By 10:00 am, people were pouring in, bringing the day's total attendance to around 30. I kicked off the summer camp with some welcome slides and then moved on to teaching the first day's slides. These slides were brimming with the basics - print, variables, and all of the main data structures-so I was impressed and relieved that everyone seemed to get it. After the slides, we gave the campers practice problems on our repl.it classroom and answered questions. First day = success!

In Day 2, we taught the campers execution flow, consisting of conditional logic and loops, in addition to libraries. We also gave them their first project, create a text adventure. For anyone unfamiliar with the term, a text adventure is a text-based adventure in which you have to make decisions by choosing from given options. Take a look at this example…

You are walking along a path in the woods and hear a startling shriek. What do you do?

A. Venture towards the source of the sound

B. Turn back and leave the woods

C. Continue along the path

Text-adventures are great projects to give beginners because they are simple and hone conditional logic. We only gave the campers a day to complete this project (to leave time for the final project), but they were more than up to the task. We also gave people the option to make a quiz if they wanted to. On Day 3, we got to kick off the day by looking at all of the text adventures and they were awesome. There was one about Star Wars, one set in medieval times, a surprisingly good math quiz, and a "What type of Pringle's chip are you" personality quiz.

We spent the rest of the day teaching them about functions and classes. To help them understand objects and classes, I used a car as an example. A car object has properties (data) such as color, model, and mileage, as well as methods (functions) such as drive and brake. Classes allow you to create custom objects, complete with properties and methods. For anyone interested, here is the code example I wrote and taught to the campers.

Python Class Example by Rohan Phanse for Paly Python on Repl.it

We also gave the campers their final project on Day 3 - create a game which utilizes functions and classes. The campers worked hard on their games and the Paly Python team and myself were pretty impressed by the results. There was a medieval combat game, tic-tac-toe, whack-a-mole, US capitals quiz (it counts as an intellectual game), and more. What stood out to me was how adept the campers were able to become at Python in only 5 days. The camp was designed to move fast, covering concepts likes classes, regex, and webscraping in a handful of days, and I think we succeeded.

In the interest of time, I won't regale the triumphs and happenings of Learn JS like I did for Learn Python, but I will give you a quick summary. Like its predecessor, it was jam-packed with content covering the basics of JavaScript and well as HTML & CSS and of course was filled with a lot of fun. I chose to only give one project so campers could really focus on their energies during the duration of Learn JS. That project was create your own website and the campers outdid themselves once again - the websites were truly stunning. I could really tell that the campers were able to grasp the fundamental of web development during this camp and I hope that they continue to practice and learn more.

While the camps were a huge success, they were not without mishaps and technical troubles. Here's a look at some of my thoughts about areas for improvement and feedback from the campers. The first thing I would like to point out is that sometimes things take longer than you account for so be prepared. In this case, I did not anticipate that HTML & CSS would take over a day when I designed the slides, but we ended up spending 1 and a half days on it. Luckily everything worked out because we were able to start it early on Day 2 and hence finish as planned on Day 3, but that is something to keep in mind.

Another factor to consider is the technical troubles. For example, the discord screen share blacked out occasionally for some campers and incessantly for others. To remedy this issue, we shared the day's slides with campers so that they could follow along on their own if the screen share became too buggy. And that's how Paly Python pulled off two summer camps. It was truly a unique experience for me in terms of learning effective ways to teach and also the aspects of organizing a summer camp from creating content, to advertising, to the part where you actually run it. Thanks for reading!