Wednesday, October 14, 2015

HSPC: Finding (or Building) a Team

This is a post in my High School Programming Competition (HSPC) series.  For an outline of current and upcoming posts, please see this introduction.
 
At the collegiate level, programming competition teams are typically formed by a chapter of the ACM (Association for Computing Machinery) or a similar club within the computer science department.  While many universities have a CS (or related) department, analogous organizations tend not to exist in high school.  In this post, I hope to share some tips on what to do if you're interested in participating in an HSPC but can't find a team to join.

I'll be writing this primarily from the perspective of a student who is looking for or building a team, as this is what I ended up doing.

School teams


Finding a coach

Most teams tend to represent and are sponsored by a single high school.  If your high school already has a team, there's not much left to do.  Thus, I'll assume there isn't one at your school.  You'll likely want to get a teacher to agree to coach a new team.  If your school has a computer science class, the right teacher to approach is pretty much obvious.

If you don't have a CS class at your school, though, this can be a little more tricky.  Some related classes which attract the type of teachers that could be interested in leading a class include math (especially higher-level math) and science (especially physics).  A robotics team coach (i.e. for a FIRST or VRC team) may be interested in coaching a programming team, too.  If none of these options apply for you, consider looking outside the school for a parent who works in a related field, like engineering or mathematics.

Realize, though, that when you approach this teacher requesting them to advise your team, you're really asking if they'd be willing to spend several hours of their time (possibly likely unpaid) to provide your team with a place to practice, advice for improvement, and the many logistical steps required to get your team to a tournament.  The more preparation and thought you put into your request before talking with your teacher, the more likely they are to agree to help.  Don't just say "I'd like to do programming contests, kthxbai!"  Instead, research a specific contest that is a reasonable distance from your school you'd like to attend, come up with an estimate on the time they'd have to spend per week on this project, and explain (in as precise a way as possible) how you need their help.  This way, they have more information to make a good decision.

Team Members

You will want to find around 3 other people to join your team (team size limits may vary based on the contest you will attend).  If you already know some friends who would be interested in competing, this isn't a very hard task.  However, it may be that you're the only one you know at your school interested in CS.  This is one area in which having a teacher as a coach is very helpful; they may be interested in making an announcement before class, which will get the word out quickly.  Depending on your school policies, it may be possible to create a flyer and post it on a bulletin board in the hall, or post to a class Facebook group.

On the other hand, it could be that you have way too many people who are interested.  This is a good problem!  Many contests will allow multiple team registrations per school, so it may be possible to send everyone who is interested.  However, it is also typical for contests to cap the number of teams coming from the same school; for instance, UVa caps our contest at 3 teams.  In this event, it is a good idea to hold a "qualifier" tournament or give all interested parties a test and take only the top students. 

Community teams

School teams are sometimes infeasible for various reasons; this was the circumstance in which I found myself.  Building a community team tends to be a little more difficult, particularly because there isn't an easy way to locate potential team members.

Finding a Coach

Finding a coach for a community team can be somewhat challenging; most often, it ends up being a parent of one of the team members who may have some relevant background.

If none of your team members' parents have any interest in CS, fear not!  It is completely possible to have a student-led team, but you do need an adult "figurehead" to handle logistical concerns and act as a point-of-contact for the contest director.  Technical mentorship can be sourced through means other than your "official coach;" for instance, you could contact a local university with a CS competition team and ask if they'd be interested in sending a few students to give a presentation and/or provide some feedback on your preparation.

My advice from above on preparing before approaching your potential coach is still applicable in this situation: the more complete of a picture you can "paint" for this person, the more easily they can make a decision to volunteer their time.

Team Members

Many programming competitions are built around the concept of a team of 3 or 4 students working to solve more problems than other teams.  While policies on "one-person teams" vary between host organizations, the general sentiment is that you need team members to do well and to optimally learn.  (My personal experience testifies to this.)  So, although it can be tempting to try to compete solo instead of going to the effort of finding possible team members, it is well worth the time to find friends interested in this topic.

Unfortunately, there is no universal way to contact anyone in a geographic region to ascertain their interest in an activity.  Some options could include posting a notice in a local library, reaching out via Facebook groups, or talking with members of a local hackerspace.

As another point of note, these team members do not even need to be well-versed in programming.  In my senior year of high school, my team consisted of two people who really knew the Java language and two people who knew enough programming to write some simple things, but who were just really good at thinking logically and solving problems.  These contests really boil down to solving problems with programming as simply the medium for recording the solution, rather than a programming event that happens to involve solving problems.

If it is relevant to your situation, homeschoolers tend to have a geographically-defined association that may have a Facebook group or email distribution list.  Although, from your perspective, it may sometimes appear that you are the only person in your community interested in programming, trying an email list like that one can be quite fruitful.

Other Thoughts

This was a very non-technical entry and probably the least important post in the series.  Finding team members and coaches is a "soft-skills" problem, and there is no right answer.  I promise the future posts in the series will be much more technical and easily applicable, but I wanted to write this first because one must have a team before getting really crazy about preparing for a contest. 

No comments:

Post a Comment

Please keep comments appropriate for all audiences. Thanks.