This year, I’m teaching AP Computer Science Principles for the first time, using Harvard’s CS50 curriculum. One of the CS50 assignments is called Fifteen, and in this assignment students program the computer to play a digital version of the game with fifteen little numbered plastic tiles on a four by four grid, with one space empty. By sliding tiles into the empty spot, the player attempts to move the tiles into numerical order.

I felt like this assignment hit a sweet spot for many of my students. They found it fun, and it challenged them. Their understanding of two dimensional arrays in C improved. Their understanding of the purpose and naming of functions that return values grew. In response to this, I decided to pause and regroup, and give my students a creative assignment to build on what they’d learned in Fifteen.

CS50, the Harvard course that my AP CS Principles course is based on, is a great college course. I deeply appreciate the job they’ve done adapting it for use in high schools. Harvard students do the course in thirteen weeks, culminating in a creative final project. If my students do the course as provided, they won’t have a chance to do a creative programming assignment until March, six months in.

The assignment I gave them, Squares, asked them to choose a square based game, and program the computer to play it. It could be a one player game, like concentration, or a two player game, like Connect Four. They could program the game to let two human players play, or to have one player play against the computer. The advantage of giving students so much choice was that projects could vary greatly in difficulty. I made this clear to the students, and most of them chose projects appropriate to their own ability and willingness to spend time stretching it. When some students bit off more than they could chew, I helped them pare down their project so they could complete it.

Connect Four

One thing that surprised me was that several students took a deep dive into Unicode, beyond anything I could have taught them, in order to make their games look nice. This wasn’t really part of the project, but just students stretching their wings.

This game “Sokoban” is drawn in the terminal using unicode.

One student even learned to install and use the ncurses package, a sort of proto video game platform. He made a great version of Tetris.

The second part of the assignment was made with the “Create” task of the AP exam firmly in mind. Students had to make a short video (2 minutes or less) showing the play of their game and an explanation of one algorithm they wrote. I would not skip this part of the assignment! Watching those videos together with the students was, I believe, great preparation for the Create task videos students will need to make in April.

In early February, four of my students gave a presentation on the Squares project at the “Beyond Boundaries” conference hosted by LearnLaunch at the Hynes Convention Center in Boston. It was a valuable experience for them, and after their presentation they showed off their games for several hours at a table at the conference.


LS students speaking about the Squares assignment at the LearnLaunch Conference

I’ll refine and use the Squares assignment next year, as I feel it was a significant success. It placed a creative, fun project at the end of the first semester and broke my students out of a sort of grind, where they were learning programming concepts, but wanted a chance to show off their creative spirit in an open ended project.