By Ruben Krueger
An intergalactic spaceship that flies through the blackness of space, shooting lasers, and dodging aliens—all while getting a high score. This was the game that 16 middle and high schoolers from Lincoln County coded over the course of three weeks in SeaCode, a free, introductory computer science camp.
SeaCode students and the teaching team met in the Boone Center of Newport High School. In this photo, they are wearing the camp t-shirts. (Photo: Brian Hanna)
Our society has been revolutionized by computer science, yet most of the general population is unaware of what “coding” —writing instructions for a computer—even means. Thus, Newport High School teacher Brian Hanna and I wanted to ameliorate this by creating SeaCode. Undergraduate students Jane Myrick, Gatlin Andrews, Ryan Russell and Alex Rash graciously helped us teach the camp. Interestingly enough, all five of us are former students of Mr. Hanna!
Gatlin, Ryan, and Alex are now computer science students at Oregon State University, and Jane is an English and Education double major, also at Oregon State. Brian is a math, physics, and nascent computer science teacher, and a winner of the 2015 Presidential Award for Excellence in Mathematics and Science Teaching.
Typing away in the Boone Center of Newport High School, the students used a web editor to write Javascript code (with help of the p5.js graphics library). The first day was an introduction to drawing with the p5.js library, and by the end of the two hour class, the students made a ball bounce off the edges of the screen, changing color each time. The next five days were a crash-course into the fundamentals of computer science, and included concepts such as variables, functions, and object-oriented programming.
During the remainder of the camp, the students worked on their games. Each day was focused on a implementing a major game feature (the star background, the spaceship, or aliens, for example), and this was broken down into a number of tasks for them. The tasks described what they had to do, but it was their responsibility to write the solution—they were not “handed” any code. Par for the course for emerging software engineers, this challenged the students and often necessitated extended debugging sessions and concept reviews.
A student coding the game.
Photo: Brian Hanna
Once students were finished with the day’s tasks, they added new features. For example, after finishing the star background, some students made their stars twinkle and others added in a “hyperdrive” feature which made the stars move past the ship at lightspeed. By the end of the camp, all of the games looked very dissimilar as the students added different types of aliens, lasers, spaceships, and even two-player modes!
Although we wanted all of the students to finish their games, creating an enjoyable experience for the students was our main goal. Thus, we abstracted away concepts that would be overly burdensome for a beginner, keeping only what was critical for the game. Moreover, we handed out incentives: all students received a t-shirt which said “I can code” and ice cream on the last day, and we raffled off a miniature drone and Arduino microcontroller.
Our next priority was exposing the students to the esoteric world of computer science. Currently, our educational system is inept at making students aware of this field. According to computer science education group Code.org, only forty percent of all high schools have computer science programs, when more than half of all new STEM jobs will be in software development. When I attended Newport High School, we lacked a computer science course; consequently, I was only introduced to coding when I joined our school’s robotics team. Fortunately, Brian Hanna has been working to change this. He attended SuperQuest workshops*, and this year he created and taught an introductory programming course, the first of its kind at Newport High School. However, with this camp we wanted to reach students across the county, from a wide range of ages, and students who would not be able to enroll in Hanna’s semester-long course.
It is our belief that even if a student left the camp without understanding what a variable is, then at least the student is aware of this field and would be more inclined to enroll in an introductory computer science course in the future. Additionally, we highly encouraged the students to further their study of computer science, and showed them free, online resources to do so.
Although the students, most of whom had no experience with computer science, made prodigious growth in their abilities, we, the teaching team, learned even more. This was my first time teaching computer science and I quickly realized that knowing a subject is necessary but not sufficient to teach that subject. Clearly communicating concepts such as variable scope, functions, and objects, I now appreciate, is much more difficult than actually using them. As an ancillary benefit, we all became more familiar with Javascript, including some of its atrocious features such as implicit variable creation, type coercion, and automatic semicolon insertion by the interpreter. (These idiosyncrasies caused a majority of the student’s bugs.)
With these reflections, we have started planning next year’s camp, and are eager to accept more volunteers, grants, or any other type of assistance. For SeaCode 2019, we hope to create two camps—one for middle schoolers, one for high schoolers—and recruit more students from demographics underrepresented in software engineering.
SeaCode was sponsored by the Partnership Against Alcohol & Drug Abuse (PAADA), the Lincoln County School District, and Mo’s Restaurants. Additionally, this camp would not have been possible without the help of Brian Hanna, who helped me create and organize the camp.
More Information
*The summer SuperQuest teacher professional development workshops in Newport were offered by the Oregon Computer Science Teachers Association and the Oregon Coast STEM Hub.
About the author
Ruben is a graduate of Newport High School and is currently a sophomore computer science major at Stanford University. His first experience with coding was during his senior year of high school through his afterschool robotics team which competed in the MATE ROV Competition. When not being productive, you may find Ruben running, watching Family Guy, or reading. He is currently working at QuickCarl (www.quickcarl.com), a tech startup based in San Diego. You can contact Ruben at ruben1@stanford.edu or www.rubenkrueger.com