How I started and ran a summer coding camp with my friends just after graduating high school

Jeffrey Wang
10 min readAug 23, 2018

This summer, two of my friends (Sammy and Trevor) and I spent two months planning and running a week-long coding camp in the summer called Code Horizon. It was one of the best experiences I’ve had in my life so far and I’d love to do it again, because it was so inspiring and helpful to computer science education and pedagogy in general.

Why did we want to start a summer camp?

How did we do it? It first took motivation. What were our motivations?

First, as a computer science student, I have experienced the pitfalls of computer science education in today’s world. We don’t start early enough and we don’t have enough qualified teachers. As a result, kids are left to learn coding on their own, often without a solid curriculum. So our first motivation was to provide an opportunity for students to learn computer science through experts.

Second, in the summer after my 9th and 10th grade years, I was invited to teach at a local summer camp, supposedly to teach coding. However, this summer camp did not teach coding. Instead, all of the classes I was assigned to teach revolved around Minecraft. I was actually assigned to teach the Minecraft modding class, but during the first year, instead of using Java, the kids had no programming knowledge, so they used a proprietary, sui generis platform called LearnToMod.

Both Sammy and Trevor taught at this summer camp as well (but not at the same time as me) and had the same sentiment: this summer camp wasn’t delivering the best educational experience possible to students; this became our second motivation in forming our coding camp.

Third, a personal motivation. In the second year teaching at this local summer camp, I was told to teach real Minecraft modding through Minecraft Forge instead of LearnToMod, which I supported. However, in order for students to learn real Minecraft modding, they needed to know Java beforehand. Unfortunately, no prerequisites were enforced for this class (this was beyond my control), so none of the students came in with any Java knowledge. As a result, I made my best effort to teach them Java-based Minecraft modding, but ultimately failed them as a teacher. Realistically, it was impossible to teach a student Minecraft Forge modding without Java knowledge. I tried to make tutorial videos, which have since proven helpful for other people exploring Minecraft modding on YouTube, but didn’t help my own students that much, since they didn’t have the necessary foundations to succeed. My third motivation is therefore to ensure students have a solid foundation before continuing to more complicated projects, which newbies to coding usually wish to dive into before learning the basics. Sammy and Trevor also both agree with this motivation, but draw on their separate personal experiences to arrive at this shared conclusion. We agreed in the future, we can’t teach kids too quickly. We needed to start them off on the basics and go at their pace to ensure they have that solid foundation.

How we got started

In May of this year (2018), I graduated from my high school, TAMS, which was a boarding school I attended after leaving my local public high school. After graduation, I came home and became bored. I had no summer plans and I knew I had to do something productive with my life. So I contacted senioritis-ridden Sammy and Trevor, who were still stuck in high school, to see if they were interested in starting a coding camp. All three of us agreed we could do things better. All three of us wanted to teach. All three of us were motivated. And all three of us had had this idea in our minds for a while. In the past, I discussed starting a summer coding camp with Trevor, but it never came to fruition. Now, fresh out of high school and about to attend college, I was more comfortable pursuing this opportunity. With a similarly favorable situation for Sammy and Trevor, all three of us decided to join together to form a coding camp.

Initially, I threw around a coding camp proposal that involved many classes where we would teach for many weeks in the summer. This proposal was soon reduced as we realized it would be very difficult to gain customers. And we later learned it was very difficult to gain every single customer we got.

After a few days, we decided to cut it down to one class. At the same time, we structured the legalities of the camp and brainstormed names for our venture at a Chinese restaurant and finally came up with our name: Code Horizon. We immediately registered the domain name codehorizonmckinney.com and proceeded to get to the real work.

The Code Horizon logo.
A promotional banner for Code Horizon.

Much of our prep work was done together at our local Starbucks, home to free Wi-Fi and Java Chip Frappuccinos™. The things that we worked on, enumerated in a somewhat chronological order, included:

  • Pinpointing the ideal price
  • Creating advertisements and the website
  • Making efforts to reach out to the community
  • Marketing on social media
  • Working on a signup mechanism
  • Drafting up the parent contract
  • Finding a venue
  • Purchasing the necessary equipment for the camp
  • Creating the curriculum

Of the above tasks on the list, perhaps the toughest item was finding a suitable venue. We were thankfully able to call in Sammy and Trevor’s calculus teacher Mr. Parr and rent a classroom for one week at a tutoring company, The Math Coaches. Without his generosity, our business would’ve likely fallen apart, so we were very grateful to him for helping us get Code Horizon going on its feet.

The next toughest item was purchasing equipment. To be efficient with our finances and to minimize risk to each partner, we decided to buy the equipment after payment was made by the parents. This way, we could minimize wasted equipment and save as much money as possible.

We priced our camp at $273 per person, so clearly we could not afford to purchase laptops for every student. The summer camp we previously worked at used old laptop computers that were on their last feet but reused every week by tons of students. We found this to be inefficient and a bad experience for both the staff and the students. The last thing we wanted was for technology to become an impediment to students.

The solution to our needs for the technology to be inexpensive yet functional and new was to purchase Raspberry Pi computers for every student and allow them to keep them after the camp. It was so simple yet elegant. Despite being the size of a credit card, these computers are quite powerful in their own right and its default operating system, Raspbian, comes with software specifically for kids to learn programming with. Python, Java, and the whole nine yards come pre-installed with several IDEs. Our job became so much easier, and the novelty of using a credit card-sized computer was certainly a plus, not to mention that we told parents they could keep the Raspberry Pi. (The Pi and all equipment except the monitor were included in the cost of the camp and could be kept after the conclusion of the camp.)

To be honest, we originally wanted to use the best equipment possible for the kids. However, as reasonable businessmen, we soon realized this wasn’t exactly possible. Honestly, the Raspberry Pi was a godsend for us, and made our biggest cost the monitors. We actually eliminated this by pooling together our home’s unused monitors and buying HDMI adapters so they’d connect to the Raspberry Pis. After the camp, the kids could use their own monitors at home to use their Raspberry Pis.

We ended up sourcing our equipment from three sources: Amazon, Micro Center, and Arrow. We bought some of the equipment in bulk and saved money. (These choices would certainly change if we were to buy this equipment today and different websites had cheaper prices.)

Running the actual camp

We knew our camp would work well regardless of any set curriculum because the three of us had a synergy that was unique to us. We had a curriculum outlined in our minds, which we put on paper for good measure, but we ended up deviating from plans a little. I’ll explain why that ended up being a good thing.

After prepping the classroom on a Sunday afternoon, we came in Monday morning ready to go. We first took care of the paperwork and formalities, and then showed in our first set of students for our morning half-day class. (Later, we did the same for our afternoon class.)

We hit the ground running, showing them how to use the Raspberry Pi computer and getting started immediately with programming concepts by using Scratch.

Sammy showed one of our students how to use Scratch on the first day.

Here’s where it gets interesting. Our morning class was full of elementary schoolers, but our afternoon class had middle schoolers. The difference we saw between the two was staggering.

The morning class had difficulty typing on their keyboards and seemed to cling onto Scratch, while we moved the afternoon class into Python immediately after we realized Scratch was not challenging enough.

We then decided to split the two classes into two sets of curriculum, which we’d come up with as the classes went. Call us unprepared, but we found that going with the needs of the students in each class ended up helping them a lot better.

The morning class touched Python once, but we didn’t touch it any more after they seemed to be disinterested and confused by the complexity of Python. Instead, we went into easier to grasp concepts that involved little typing. We did some more Scratch, but we also went over how the internet worked, how to use the command line, and things of that nature. So we ended up giving them a taste of real programming, but ultimately focused on foundational concepts to get them on the right track to be inspired to learn it once they are able to in the future.

On the other hand, the afternoon class spent several days on Python concepts we thought we wouldn’t be able to cover because we wouldn’t have enough time. We also spent time on the concepts the morning class went over too, but further in detail. We actually exhausted our originally planned week-long curriculum with the afternoon class by the end of Tuesday, but we had more up our sleeve and were so glad they were able to learn at the pace they did. As a teacher, it’s hard to describe how happy you feel having such capable students, and it’s with pleasure we found more things to teach them.

A Raspberry Pi in action at our camp, connected to power, keyboard, mouse, and monitor.

One rule we always followed in our camp was No Minecraft. Unfortunately, Minecraft Pi Edition was included was part of Raspbian OS and we had to tell the kids to not play it once they found out about it. But ultimately, preventing the students from playing Minecraft helped keep both them on task as well as us from getting lazy and just letting them play. Our rationale was: we didn’t ask parents to pay $273 just so we could sit around and let them play Minecraft.

The week quickly came to an end. When we packed everything up on Friday for the kids and then later by ourselves, we thought to ourselves, “what now?”

Reflections

After running the camp, I’ve reflected on several things that defined our experience:

We were flexible. From accommodating students moving between classes, to coming up with new curriculum on the fly, our flexibility proved to bolster our continued professionalism while ensuring that the right thing would be done whenever necessary.

We were lucky. Finding our venue was crucial for our camp to run. Having enough customers to not have to cancel the whole thing was also just as important.

Running a summer camp is no small feat. It took a ton of dedication and hard work to run, especially just preparing for it. At the end of the five days, I was glad we didn’t have to teach another week, because I was burned out. The experience, however, was undoubtedly one of the best we ever had, professionally and as friends.

I have amazing friends. This cannot be stated enough. Our friendship was super important for getting everything to run so smoothly.

Would I do it again? I would. Running a coding summer camp was a truly amazing experience that very few 18 year olds get to do on their own. I’m looking forward to seeing how I can use these experiences to improve coding camps in the future, whether they’re in the summer or during the school year.

--

--