Mr. Geeky’s response to my last post about women and coding with, “Okay, so what do you do differently?” I didn’t have an immediate answer, and I certainly don’t have all the answers, but I’m working on having more answers. Here are some brief but immediate ideas, based solely on my own experience and a tiny bit of reading.
1. Connect to what women like. Don’t know what they like? Ask. Things that work for me:
- Graphics, drawing, animation. Graphics, by the way, is a great way to reinforce math skills.
- Music and sound
- Current movies, books and tv shows. Think trivia games about these or text analysis.
- Physical object, especially cute robots, Lilypad arduino/soft circuit projects
2. Let them work in groups–at least for a couple of projects. Women are social. They like talking to each other as they’re working. Sometimes they’re talking about their projects, sometimes not. Note: not all women are social, so allow them to work alone if they want.
3. Assume they know little about the inner workings of a computer–everything from file systems to motherboards. One of my first labs is to take a computer apart. Very fun! And it gets them to understand more about the hardware. Teach them these things in context, not as a lecture. As they’re using files in their programs, for example, they’ll get what a full path name means.
4. Give students time in class to work on projects, so that they have your and others’ support. This also deals with equity issues. I can’t necessarily expect that everyone has access to a computer at home, so all their projects are done during class time. It creates a workshop environment that I’ve enjoyed. Whether that will work with more than 10 or 15 students, I don’t know. But we’ll see.
5. Speaking of projects, assign interesting projects (see number 1 above). Recently I did a search of Computer Science projects just to get some ideas to add to my own list and it was depressing. Calculate the nth prime number? Fibbonacci sequence? A lot of math-related stuff, a hold over I suspect from the days when CS was math. If students are interested in that, fine, but I’ve had better luck making suggestions, but ultimately letting them choose. My students have created games (“rock, paper, scissors”, “tic tac toe”, “lingo”) and robotics projects (“navigate a maze”, “dance with a partner”), among other things.
6. Be flexible. I’m lucky to have only women in my classes, and while there are definitely differences among individuals that I have to accommodate, they are more similar than not. Adding boys to the mix complicates matters. Boys have higher confidence than women when it comes to talking about computing and trying things. This will sometimes intimidate the women in the class. You have to be able to pivot and create an environment where this doesn’t happen. It means creating assignments that appeal across the board, and it means supporting students who do good work, but may not be taking as many risks as those who have more experience and confidence.
7. Don’t get stuck on the language, environment, etc. Especially in middle/high school. Some other language is going to come along by the time they’re in college or working. Or what they learn in high school won’t be what’s taught at the college of their choice. I like Scratch and Alice, Python (using the Calico project for my environment), and Processing (great way to create art). You’re teaching concepts. As I often tell my students, “Everyone uses a reference manual.” While you’ll memorize some things, you’ll never remember the exact syntax for everything. And if you switch languages, knowing that is very helpful. There is no right language, though some languages and environments are easier to teach/learn and are more engaging to some people.
For non-students, women who want to learn to code in order to further their careers or just because they’re interested, some of the same things apply. I’d say, too, that if you can latch them onto a project that has practical application, that they or someone they know might actually use, that’s a great way to get them involved and learning a lot. One of my first projects that involved data structures was writing something that keeps track of my food items and tries to match that with recipes. It was something I really wanted to work, so I worked harder on it. And that wasn’t something anyone has ever suggested in any class I’ve taken online or offline. I teach in a way that I’ve never been taught.
Solving the time problem is harder, but one thing that CS is good for is breaking down problems into small bits. Find a project and just write a small piece of it at a time. For my recipe project, I started with structuring my recipes so that I could separate food items from them. Just a bit at a time.
What am I missing? What else works? How do you work around the time problem?