The 2020 ACM SIGCSE International Computing Education Research Conference was in August (see website here), hosted in Dunedin, New Zealand -- but was unfortunately entirely virtual. I became so much more aware of the affordances of face-to-face conferences when attending one of my favorite conferences all through my screen. The upside of the all-virtual format is that all the talks are available on YouTube (see ICER 2020 channel here). You can read conference co-chair Amy Ko’s report on the conference at this blog post.
One of the papers that particularly speaks to undergraduate CS teachers was by Jamie Gorson and Eleanor O’Rourke "Why do CS1 Students Think They’re Bad at Programming?: Investigating self-efficacy and self-assessment at three universities" (see paper linked here, and video linked here). Gorson and O’Rourke did a survey study with over 200 introductory students from three different interviews. Their survey offered vignettes and then asked students whether they had felt similar experiences. One of their vignettes was:
Jake is unsure how to begin his programming assignment. He spends time planning how to solve the problem. Eventually, Jake comes up with a plan and begins to write code. Jake wishes that he did not need to spend as much time planning before writing code.
O’Rourke is an expert in motivation, self-efficacy, and mindsets, and she’s been exploring those issues in computer science education (see a discussion of their ICER 2019 paper here). One of the big questions in CS education is "Why do students give up, or don’t even try, computer science." We now know that increasing access to CS education does not lead to increased participation in computer science. Even in US states with 30-40% of the high schools offering computer science, the percentage of high school students who actually take a computer science course is less than 5% (see discussion here). Retention in computer science continues to be a significant problem, with women leaving computer science at a higher rate than men. Why? A big part of the problem is that many students have low self-efficacy when it comes to computers (especially women, as Alex Lishinski found). They’re convinced that they just can’t do computers, that they’re not "computer people." So they don’t try, and if they try, they’re easily defeated and give up.
This latest paper offers explanation for why introductory CS students give up so easily. What they found was that students have completely unreasonable expectations about what they should to do to be successful. One response to the above vignette was:
"Yeah I definitely feel bad when I have to spend time planning and can’t start programming right away, because at that time I am in a situation where I feel that oh I did a lot of practice and still I was stuck and I did not know where to start from and where to end ...as a computer science student, we don’t have to think after reading the question, that ok this is the plan going on in my mind. Rather, we should implement it and we should write it whatever way we feel and by running the program, we can get to know the error instead of wasting time in the beginning."
Students actually convince themselves that planning before coding is bad. They talk about professional programmers as being so confident, being able to code without planning, and knowing all the syntax and all the API’s effortlessly. Another student explanation for where she failed her expectations:
"I [think] that programmers need to know every single little piece of syntax and every code and how to at least start doing everything. . . so the fact that I don’t have it memorized just made me feel bad."
Gorson and O’Rourke show how students negative self-assessments of themselves lead to lower self-efficacy. The suggestion is that students may be giving up because they’re holding themselves up to unreasonable expectations — expectations that few students could be expected to live up to.
A good empirical result often sheds light on previous results. I particularly like this paper because it helps to explain a phenomenon documented before in CS education — students with parents or other close relatives in the IT industry tend to be more successful in computer science classes. Why? Maybe because they have reasonable expectations of professional programmers. Maybe they have seen real programmers, and they know that even they have to plan and look things up, too.
As CS teachers, part of our job should be to set reasonable expectations. Programmers have to look things up. Programmers ought to plan. These aren’t bad things to do. Students can still be successful if they have to look things up and plan, too. We have to tell students that it’s okay. They can be human and successful computer science students.
Mark Guzdial is professor of electrical engineering and computer science in the College of Engineering, and professor of information in the School of Information, of the University of Michigan.