Coherent Computer Science Instruction

Zach Huffman
8 min readFeb 27, 2018

--

The course layout for Computing Ideas (CodeHS, 2018).

What you are looking at above is the course layout for the Computing Ideas (Lovelace) course on CodeHS. CodeHS is a website designed to teach the fundamentals of coding via pre-recorded video lessons and practice exercises. It caters primarily to middle and high school students. Each lesson begins with a video segment of one of the developers explaining a new concept — these are usually in the ballpark of 3–4 minutes long. After the video is a short concept-check quiz directly covering the content in the video. This is followed by a couple of example programs (that students are encouraged to play around with) and then one or more exercises for students to complete in which they must use the new knowledge gleaned from the video.

The course pictured above features a more holistic focus on computer science. Rather than specifically emphasizing coding abilities, topics cover the basics of anything from the history of computers to their internal structure to the architecture of the internet to the primary facets of being a “good digital citizen.” When I was asked to teach a second computer science class featuring completely distinct content from the first (coding in Javascript), I chose this class as a baseline. I knew it wouldn’t last us a whole year, but as CodeHS courses are typically marketed as being a year or at least a semester long, I figured it would provide me a good starting point while I figured out where to take the class for the rest of the year.

It took my kids a month to complete.

Gestalt

There’s more to the picture than that, of course. Maybe the course would have lasted longer if my kids hadn’t primarily been (successful) graduates of my semester-long course last year. Maybe it would have lasted longer if I had only assigned one lesson per night. Maybe it would have lasted longer if I’d actually had them complete the Karel unit (which I didn’t since 78% of them had already done it in my course the previous semester). Even considering all those variables, an extremely optimistic estimate for completion time would be 3 months. And with school starting at the beginning of August, I would still have a month’s worth of curriculum left to plan, which is to say nothing of the entire remaining semester.

The issue is indicative of a larger problem underlying computer science instruction in elementary and, to a lesser degree, middle school. To my knowledge, there is no single, comprehensive source of computer science curriculum that effectively lasts an entire school year. Unlike teachers of other subjects, I don’t have a selection of textbooks that are each so saturated with content that I can’t even hope to get through half of it.

Furthermore, computer science is a new enough field that it hasn’t yet been normalized into K-12 education as a core class. Much of what I am teaching my middle schoolers currently are the same things my high school counterpart is teaching his students. They’re also the same things I learned in my first year of computer science as a freshman in college. It is new enough that it is not among the subjects covered in the common core. And if you have no standards, the whole concept of backwards planning collapses.

An excerpt from CSTA K-12 Computer Science Standards (2011).

Fortunately, all is not totally lost. The CSTA (Computer Science Teachers Association) is a group of teachers who were no doubt equally as frustrated by the lack of an overarching goal or organization for computer science educators. They established the CSTA in 2004 and in 2011 released their most recent set of comprehensive standards for computer science. These standards, while not officially endorsed by the common core (or any nation-level education government), have all but served the same purpose. And until the common core gets around to drafting its own set of CS standards, I have a feeling these standards will continue to fill that role.

Even with standards, though, the question remains: what curriculum do I deliver? Sensing the impending completion of what was to be my primary computer science course, I alone had to look for answers. For middle school, the answer was actually pretty simple: CodeHS. Fortunately, we have access to all of their courses, so I picked an appropriate direction and set that course (Python) as our next goal.

The winning entry in our pixel art competition.

As we progressed through mostly premade curriculum, I also got to know my class better. Through surveys, teaching, talking, and most importantly, listening, I started to get a feel for who they were as people. And that’s when I began to realize that perhaps the lack of a central, unifying curricular route may in fact be a blessing.

The first open-ended project I assigned my middle schoolers was in October. We had just wrapped up a unit on digital information, in which students learned, among other things, what the hexadecimal number system was and what its most common applications were. In large part inspired by input from the students, I held a pixel art competition. In it, students were given a week to create (using hexadecimal colors) pixel art. The winner, pictured above, went above and beyond expectations, and several other students blew me away with work that I wish I had space to include here. In a survey I gave later that semester, this project was universally the highest-rated assignment students had worked on, and most of them asked for another such long-term project in the same vein.

In my other middle school class, I began filling in the spaces with my own passions. As an avid gamer, I’ve taken the course in a distinctly game design-oriented direction. The last summative project of the first semester saw students writing their own version of Tron, a 1982 arcade game in which players try to box each other in using trails of “light.” Since then, the same class has developed several more games, most of them drawing inspiration from other 80s “classics.” I hope that my passion for game and game design shows in the work we’re doing and that the students are proud of what they’ve created so far.

Elementary school is a different beast. Since students are too young to own laptops or have school-affiliated email accounts, CodeHS wouldn’t suffice. While this is a limitation, my options were far from limited. Using resources like Edutopia and Google, I discovered a myriad of free resources designed to teach programming skills to young children. In this regard, I was very fortunate to have a full suite of iPads available to me 24/7. With research, I discovered nearly a dozen (mostly) free apps for the iPad that were a perfect fit for my specials classes and that continue to play a large role in them today.

Spritebox combines platforming elements with program-style problem-solving as the player traverses the land, searching for the missing pieces of their broken rocket ship. The overarching story helps keep kids engaged for the duration of the whole game.
Kodable is designed for lower elementary students. The interface is simplified and instructions are given using arrows and colors rather than words. My students find the “Fuzzes” that you control to be both hilarious and cute, and the player can unlock costumes for their Fuzzes, adding a sense of uniqueness and ownership.

Code.org in particular offered a massive wealth of lessons and, perhaps more importantly, programming puzzles for kids to solve. In addition to building coding skills, students also build literacy with iPad usage — the interface for the puzzles is completely drag-and-drop-based, and as the puzzles are all online, students become familiar with browsers, URLs, and the touch keyboard.

A screenshot of a puzzle on code.org. In this puzzle, students must use their knowledge of loops and conditionals to pick all the vegetables in the maze.

My curriculum has been developed significantly over the past 5 months, and it’s not even close to being complete. There are still over 3 months’ worth of content to teach, and every day is a process of observation for the sake of determining where I go next. Once the year is over, I can do a sort of grand review — look at everything I taught (which I am documenting day-by-day, class-by-class) and decide what to strike, what to add, what to change, what not to, and ultimately, the order in which to teach it all.

Resources

Below are listed some of the most useful resources I’ve used. I’ve been finding new resources and exploring old ones, both of which are an ongoing process that, realistically, I expect (and to some degree, hope) never to end. Thus far, however, these resources have composed the lion’s share of the content I have been administering to students.

  • CodeHS. As mentioned before, CodeHS offers over a dozen online courses, several of which I have used as baselines for my middle school classes.
  • Code.org has a ton of online resources designed primarily for elementary school. They have 6 pre-prepared courses (each one for each grade level, K5–5) that only require administering a pre-made lesson plan and procuring the resources for it. They also have dozens (perhaps hundreds) of online, touch-based puzzles that teach the fundamentals of computer science in an engaging, kid-friendly way. Code.org has been a colossal blessing for me and I haven’t even scratched the surface of what they have to offer.
  • BrainPop is a website featuring educational content for elementary schoolers in animated form. It is host to a wide variety of informative yet easy-to-digest short videos and games for kids. One of my favorite videos to show kids about what computer programming is was made by Brainpop.
  • Typing Club is a website that teaches typing in a lesson-based format. The interface is one of the most well-designed ones I’ve seen, integrating the user’s typing patterns into the data displayed on the screen. It monitors both short and long-term progress and offers typing games as “boss battles” (think summative) to test users’ typing skill. TypingClub was indisposable to me while my 4th and 5th graders were learning and practicing how to type.
  • The iPads have been absolutely essential to me this year, in large part due to the array of games and apps that center around teaching kids the fundamentals of programming. Without going into too much detail, here are some of the most useful and engaging apps I’ve had the good fortune to be able to offer to my kids: Spritebox, Kodable, Hopscotch, Lightbot, and ScratchJr.

--

--