Ali and I will presenting our paper 4 Hours to Smash the CS Stereotype and Create Something Beautiful (pdf) at the upcoming CICE Education conference in Toronto.
Christine Alvarado of Harvey Mudd college came to Google last month to gave a talk on how they’d brought female enrollment in Computer Science up to 42%. The talk is called “Three Promising Practices”, and one of those practices was a redesign of the CS1 curriculum (you can watch the video here, it’s over an hour long).
They dived into the feedback about the old curriculum, and what they found was that people who were already into CS loved it. And those that weren’t, their minds weren’t changed after a semester of CS.
When I TA’d a mandatory CS course for business students, I was so frustrated by what I saw as a missed opportunity. We had these students, who were bright, and tech-savvy by virtue of when they’d grown up and we had this space where we could educate them about what CS is, and why it’s awesome… and it was wasted. This course didn’t just not make the students want to study CS, it make them actively dislike it. They hated it. And honestly, I sympathized with them. So the Harvey Mudd talk was fascinating to me, because I think it shows how big an opportunity we miss by not creating curriculum designed to engage students who hadn’t planned on taking CS already.
And I think this is a huge problem. I actually work for Google now, and I was trying to explain what I do to someone who isn’t really technical and she said, “oh, you work for the internet”. I wasn’t quite sure what to say to that! But what is true is that collectively, computer scientists, software engineers, we’re building this digital future. And I think it’s important that that group of people is as diverse as possible.
At uOttawa, we had the opportunity to create a curriculum for a four hour workshop that’s run for high school students, at around the time they’re thinking about what to take at university. This build on work that I’d done in my previous curriculum, in terms of visual honesty.
The most interesting aspect that drove the design was just throwing out any expectation at the start that the students had any interest in, or experience of, CS. This was our opportunity to sell them on CS, to smash that stereotype.
Feedback from post-workshop surveys suggests that we’ve had some success with this, despite the short time frame of the workshop. Because the curriculum is open source, we hope that it will be able to be used elsewhere as well.
I’m going to talk about the design decisions we made, and why these were important.
1. Entirely Visual
One of the things that we’ve observed students to get frustrated by is lack of visual honesty in programming. Often in problems we pose to students, it’s a case of inputs in, outputs out. The program is a black box, and when the wrong answer comes out of this black box, students often don’t understand why, or how it’s going wrong.
When we cerate visual programs instead, it’s so much clearer. The line is not where it should be, or the circle is smaller than expected. It becomes a lot clearer what kind of mistake they’re looking for.
2. Activity Based
Don Norman wrote about activity centred design in terms of remote controls (amongst other things). It’s a plea to designers to design for what people want to achieve, rather than how to do it. We’ve taken that approach here. Rather than following the traditional path of thing to learn, followed by contrived example, we present things they may actually want to do, and then explain how to go about doing them.
We’re not expecting students to go away with a thorough grasp of the constructs, so it doesn’t matter if they master if statements but not loops. This means that we’ve made it so that the modules are stand alone as possible. We’re not telling them what to do. We’re asking them what they want to achieve.
3. Open Source
We deliberately chose to make the curriculum as open as possible – in every sense. We use the open source software Processing, which runs on Mac OS, Linux as well as on Windows. The curriculum itself is also licensed under creative commons.
This has the big benefit of reducing as much as possible the barriers to students continuing at home or at school – the software is free, and compatible with whatever operating systems they use.
We were extremely selective about hiring TAs. We aimed for a ratio of 4 students to each TA, as being stuck and having to wait for someone to help you is so frustrating to students, and we wanted to keep that as minimal as possible. In hiring TAs, we were looking for strong problem solving and coding skills, and as importantly, excellent communication skills. We were looking for TAs who were fun for the students to interact with, who would be role models. Our TAs are potentially our biggest asset in smashing that stereotype, so it’s really important that they are awesome.
The low ratio of students to TAs allows us to give students the freedom to work at their own pace, on what interests them. Students with prior programming experience will often skip to the more advanced modules, and students who are less comfortable can take a slower pace, or focus on more math-based activities, such as fractals.
6. Inclusive of Interests and Levels
We provide a mix of modules, ranging from complete beginner to more advanced and students are welcome to come up with other things to create, or find more information on the internet. Often students want to make games, so we facilitate that with a pacman-like framework (we’d like to add Brick Breaker soon), but we also have several fractals, for more math-loving or artsy students.
The students are challenged to “make something beautiful”. It’s always interesting to see what they come up with! This open-ended approach means there are always extra challenges – for example, animation! Students have also started to explore Processing’s 3D capabilities.
We take a very open approach, encouraging students to look things up on the internet, and even to share things they create on social networking sites like Facebook.
We’ve found our experience tremendously rewarding. Curriculum development is a design activity, and approaching it with some different constraints has been interesting. We’re very encouraged by the success of our program, and other curricula designs in attracting different types of students into CS and we hope to continue our work further, by partnering with other universities and organizations to bring the curriculum to them and expand it further.