A week ago, Alfred Thompson was musing about CS projects that might be interesting for girls. I commented on the virtual pet program my CS II students are working on. Honestly, finding things all girls are interested in is difficult. I have all girls in all my classes, so I’m always leaning in the direction of “girl-specific” projects, but mostly, I keep it general and let them pick. So, in my 7th grade Scratch class, I tell them to create a story, and the guidelines I set out are technical (change backgrounds, change costumes, have your characters talk) and contextual (your story must have a plot). What I don’t say is what the story has to be. So I got stories about princesses and cats, rock stars and aliens. Recreating fairy tales was by far the most popular thing to do. Now they’re working on games, where going through mazes seems to be the most popular choice.
As I’ve written about before, I’ve always struggled with engaging 8th grade. Infographics seems to be working. The key is I let them pick their data. So, I have broadway plays, Starbucks drinks and favorite vacation spots.
To teach lists last year, I told students to create word games. We ended up with trivia games, boggle, jumble and lingo. Graphics is always a huge hit with my students. Graphically representing anything adds to the fun. So when we were learning about files and data structures, they created infographics (it’s a theme for me this year). Objects is the same way. Though it’s a challenge to add graphics, they like visualizing their objects, so we have virtual pets and haunted houses. For final projects last year, we ended up with pong and snake, fun games with easy to generate graphics.
I think the key is to offer several examples. For the objects project, I suggested everything from a book being sold online to a student registration system. While the latter might be more real world, they tend to gravitate toward things that are more fun. Choice is key. Many of the CS classes I’ve taken have students writing code for a single purpose. Write a poker program or write a program that reads in this file and spits out this data. Those lack creativity because one has no choice. I’m actually assessing creativity, which I can’t do if students have no choice, if all I’m looking for is good code. For the record, the harder the projects get, the messier the code. If I graded just on whether the code was organized, my students would fail.
Creative ideas and solutions to problems are more important to me than neat code. And girls seem to want to come up with creative ideas and don’t want to focus so much on neat code. All I ask is for no errors. If the code doesn’t quite do what you had in mind, fine, we’ll deal with that later. I don’t get hung up on things they don’t need to know until or unless they become professional programmers. Things like comments or even public versus private methods I leave for another time.
Most of my projects, I come up with myself, but many I get from books. The virtual pet project I got from Python Programming for the Absolute Beginner, 3rd Edition. I often modify them or let the students modify them. We discuss what might be appropriate and fun before we start. Familiar projects might be easier for a teacher, but I’m betting the concepts don’t stick with the students if they don’t find them compelling.
Ultimately, I think compelling projects will work for boys or girls, but I find girls often need more suggestions than boys. The industry right now is all about boys so examples of games, for example, come readily to boys. My girls turn to friv, which offers dress-up games and other kinds of girly games, for example. I do worry about stereotyping for some of these games, but if creating a dress-up game will draw in one more girl to CS, I can address the stereotype issue later (which I always do). Just ask girls what they’re interested in, and then try to turn it into a project. That usually works better than trying to come up with your own ideas.