Archive for December, 2020

The goal of the first CS course should be to promote confidence if we’re going to increase diversity in CS: Paying off on a bet

This should be a thing: If you make a public bet on Twitter, and lose, you should have to write a blog post explaining how you got it wrong.

Let me set the stage for the bet. There are studies suggesting that the Advanced Placement (AP) Computer Science A exam has a significantly different impact on students’ majors than other AP exams. (For non-US readers: AP tests provide an opportunity for secondary school students to earn post-secondary school credit.) AP CS A exam-takers are more likely to go on to take more CS courses or become a CS major — more likely than, say, students taking AP Calculus or AP US History exams to become mathematics or history majors. But does that extend to the newer AP CS exam, AP CS Principles? AP CS Principles was designed to be less about the kinds of programming that CS majors do in their first year, and more about a broader understanding of computing and its effects (see College Board site here). There were several of us talking about this in the Spring. On April 1, 2019, I tweeted to Jeff Forbes (see link): “I bet that AP CS Principles has no impact on CS or STEM majors. It’s such a different course (eg doesn’t map to CS courses on most campuses).” He took that bet, and he was right. A study released by the College Board shows that there is a causal relationship between taking AP CS Principles and majoring in CS in undergraduate (see report link here). The impact is large. Overall, students who take AP CS Principles are three times more likely to major in computer science in college. AP CSP students who are female are twice as likely to major in CS.

I wasn’t crazy for expecting that AP CS Principles would not have such a big impact on recruitment and retention. At SIGCSE 2020, Joanna Goode and co-authors published a paper showing that (see blog post link here) AP CS Principles is effectively recruiting much more diverse students than the AP CS A course (which is mostly focused on Java programming). But, AP CS A students end up with more confidence in computing and much more interest in computing majors and tech careers. ACM TOCE in 2019 published a paper using NCWIT Aspirations award winners (see blog post link here) showing that taking the CS Advanced Placement A exam was one of the best predictors of persistence three years after the high school survey in both CS and other technology-related majors. The TOCE paper authors made a particular emphasis on the importance of programming: “It seems that involvement in general tech-related fields other than programming in high school does not transfer to entering and persisting in computer science in college for the girls in our sample.”

So I had good reason to believe that non-programming-intensive courses might not have a big impact on recruitment into the CS major and retention. But I accept the evidence that I was wrong. What else is going on?

Here’s another recent piece of evidence that supports Jeff’s belief that AP CS Principles (and classes like that) could be having a big impact. Philip Boda and Steve McGee have a paper coming out in SIGCSE 2021 showing that the Exploring CS course (see website here) is having a significant impact in driving up AP CS A participation and diversity (see paper here), which continues to have a large impact on majoring in CS. Exploring CS, like AP CS Principles, is de-emphasizes programming in favor of a broader understanding of computing and helping students to see themselves as successful at CS.

Neither of these papers offers an explanation for why AP CSP or ECS is having this positive impact. They’re both large scale quantitative stories. You’d think that I might have learned my lesson from this last failed bet. Nah. I’ve got guesses. My guesses might be wrong, as they were in this case. I’m a post-positivist. I don’t think we’ll ever get to the place where we know the complete truth, but we should keep trying, keeping making hypotheses, and we can keep getting closer.

Here’s my hypothesis for what’s going on, stated as a prediction:

A first course will be successful at promoting recruitment into CS as a major or career and at retaining students in CS if it increases students self-efficacy about programming tasks.

The critical part is for students to increase their confidence that they can be successful at programming tasks. AP CS A easily does this, which is why it has such great results in recruitment and retention. Not all classes or experiences do, as the NCWIT study suggests. AP CS Principles and ExploringCS are all about increasing student confidence, helping them to see themselves as successful at computing. I don’t know how little programming a student needs to do to increase their self-efficacy. Maybe it’s enough to see programs and what programming is about.

Recent research in computing education has been focusing on self-efficacy as one of the most important variables predicting student recruitment and retention in CS. Alex Lishinski and his co-authors showed that self-efficacy had different relationships for female and male CS students (see paper link here) and that programming projects influenced students’ sense of self-efficacy, which in turn influenced performance in the CS class (see paper link here). Jamie Gorson and Nell O’Rourke found (in an ICER 2020 paper that I blogged about here) that CS students had deflated self-efficacy, in part, because they had unreasonable expectations of what real programmers do. Dr. Katie Cunningham, soon to be a post-doc joining Nell’s lab, showed in her dissertation how students simply give up on programming tasks that they don’t think that they’ll be successful at (see blog post on Katie’s dissertation defense). Self-efficacy is likely an important variable in recruitment and retention, particularly of female students, and it’s one that we can manipulate with better designed education.

I’m not the first person to to suggest this relationship. In a study with over 5 million participants, Peter Kemp and colleagues suggest that female participation in secondary school computer science in England is being negatively impacted because of female students’ low self-efficacy in CS — and that this is because of the CS classes (see paper link here). In England, curriculum in Information and Communications Technology is being faded out in favor of a Computer Science focus. They write in their paper “Female Performance and Participation in Computer Science: A National Picture”:

The move to introduce CS into the English curriculum and the removal of the ICT qualifications look to be having a negative impact on female participation and attainment in computing. Using the theory of self-efficacy, we argue that the shift towards CS might decrease the number of girls choosing further computing qualifications or pursuing computing as a career. Computing curriculum designers and teachers need to carefully consider the inclusive nature of their computing courses.

I made my bet because I thought that the programming-light focus of AP CS Principles (or even ExploringCS) would have less of an impact on CS recruitment and retention than the programming-intensive focus of AP CS A. I now believe I was wrong. I would now bet that the amount of programming probably isn’t the critical variable at all. It’s whether students come out of these courses saying, “I can do this. I can program.” That’s the critical variable for recruitment and retention that I believe AP CS Principles and Exploring CS are influencing successfully.

December 29, 2020 at 7:00 am 24 comments

Dijkstra’s Truths about Computing Education Aren’t: The many kinds of programming

ACM Turing Award laureate Edsger Dijkstra had several popular pieces about computer science education. I did my Blog@CACM post on one of these (see post here), “On the cruelty of really teaching computer science,” which may be the most-cited computing education paper ever. Modern learning sciences and computing education research have shown him to be mostly wrong. Dijkstra encouraged us to avoid metaphor in learning the “radical novelty” of computing, which we now know is likely impossible. Instead, the study of metaphor in computing education gives us new insights into how we learn and teach about programming. So far, I’m not aware of any evidence of anyone teaching or learning CS without metaphor.

After my Blog@CACM post, I learned on Twitter about Briana Bettin’s dissertation about metaphors in CS (see link here). Briana considers the potential damage from Dijkstra’s essay on computing education. How many CS teachers think that analogy and metaphors are bad, citing Dijkstra, when the reality is that they are critical?

The second most popular of his computing education essays is “How do we tell truths that might hurt?” (See link here). This essay is known for zingers like:

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

He goes on to critique those who use social science methods and anthropomorphic terms when describing computing. He’s wrong about those, too (as I described in the Blog@CACM post), but I’ll just take up the Basic comment here.

Today, we can consider Dijkstra’s comments in light of research on brain plasticity (see example article here). It wasn’t until 2002 that we had evidence of how even adult brains can grow and reorganize their neural networks. We can always learn and regenerate, even as adults. Changing minds is always hard. The way to achieve change is through motivating change — being able to show that change is in the person’s best interest (see example here). Maybe people stick with Basic (or for me, with HyperTalk and Smalltalk) because the options aren’t obviously better enough to overcome inertia. The onus isn’t on the adult learner to change. It’s on the teacher to motivate change.

There are computer scientists, like Dijkstra, who believe that innate differences separate those who can program from those who can not, a difference that is sometimes called the “Geek Gene.” An interview with Donald Knuth (another Turing Award laureate) last year quoted him saying that only one person in 50 will “groove with programming” (see interview here). We have a lot of evidence that there is no Geek Gene (see this blog post here), i.e., we have note yet identified innate differences that prevent someone from learning to program. Good teaching overcomes many innate differences (see blog post here making this argument).

Of course, there are innate differences between people, but that fact doesn’t have to limit who can program. Computers are the most flexible medium that humans have ever created. To argue that only a small percentage of people can “groove with programming” or that learning a specific programming language “mentally mutilates” is to define programming in a very narrow way. There are lots of activities that are programming. Remember that most Scratch programs have only Forever loops (if any loops at all), and Bootstrap:Algebra doesn’t have students write structures to control repetition. Students are still programming in Scratch and Bootstrap:Algebra. Maybe only one in 50 will be able to read and understand all of Knuth’s The Art of Computer Programming (I’m not one of those), and maybe people who programmed in Basic are unlikely to delve into Dijkstra’s ideas about concurrent and distributed programming (that’s me again). Let’s accept a wide range of abilities and interests (and endpoints) without denigrating those who will learn and work differently.

December 7, 2020 at 7:00 am 6 comments


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 8,422 other followers

Feeds

Recent Posts

Blog Stats

  • 1,829,333 hits
December 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031  

CS Teaching Tips