Posts tagged ‘computing education’
Why the ‘coding for all’ movement is more than a boutique reform – Margolis and Kafai respond to Cuban in Washington Post
Highly recommended reading — Jane Margolis and Yasmin Kafai respond to the concerns of Larry Cuban about the “coding for all” movement (that I blogged on here). They address a wide range of issues, from the challenges of changing school to the importance of education about coding for empowerment.
On a functional level, a basic understanding of code allows for an understanding of the design and functionalities that underlie all aspects of interfaces, technologies, and systems we encounter daily. On a political level, understanding code empowers and provides everyone with resources to examine and question the design decisions that populate their screens. Finally, on a personal level, everyone needs and uses code in some ways for expressive purposes to better communicate, interact with others, and build relationships. We need to be able to constructively, creatively, and critically examine designs and decisions that went into making them.
We’ve talked about this problem before — that it looks like we’re graduating fewer CS undergraduates, despite rising enrollment. Interesting analysis in The Chronicle:
Aside from looking remarkably like the Cisco logo itself a representation of San Francisco’s iconic Golden Gate Bridge, the chart clearly shows fluctuation in interest among undergraduates and graduates in computer science.The reason for that fluctuation isn’t clear from the graph, but we have a couple of theories:
1. The pipeline was primed: In the 1970s and 1980s, many elementary, middle, and high schools taught computer programming to students, according to Joanna Goode. As an associate professor of education studies at the University of Oregon, Ms. Goode has researched access for women and students of color in computer science.“But, as the PC revolution took place, the introduction to the CD-ROMS and other prepackaged software, and then the Internet, changed the typical school curriculum from a programming approach to a ‘computer literacy’ skill-building course about ‘how to use the computer,’”…
2. The job market: Fluctuations in college-degree attainment are often connected to fluctuations in the job market in certain industries.
This is my third blog post in a series inspired by a thread in the SIGCSE-Members list and by the Slate article which argued that “Practice doesn’t make perfect.” Macnamara et al did a meta-analysis of studies of expertise, and found that a relatively small percentage of variance in expertise can be explained through hours of practice. The Slate authors argue that this implies that genetics explains the rest of the variance.
- In the first post (see here), I argued that the practice+genetics is too simple to explain expertise. First, practice can be deliberate, lazy, or teacher-led. Second, there is experience that leads to expertise which is between genetics and practice. The most significant flaw of both Macnamara et al. and Ericsson et al. is ignoring teaching.
- In the second post (appearing yesterday in Blog@CACM), I addressed a claim in the SIGCSE-Members list that programmers are “wired” differently than others. Most CS teachers agree with the Slate authors, that students can NOT be more successful with more work. The evidence that better teaching leads to better learning is overwhelming. In fact, there is significant evidence that teaching can even overcome genetic/innate-ability differences.
Lots of CS teachers believe in the Geek Gene Hypothesis, and for good reason. It’s frustrating to have seemingly no impact on some, especially the lower-end, students. Even the award-winning Porter, Zingaro, and Lister paper points out that the earliest assessments in the class they studied correlate very highly with the final grade. Gas Station without Pumps voiced a similar sentiment in his blog post in response to the Slate article:
But the outcomes for individual students seem to depend more on the students coming in than on what I do. Those students who come in better prepared or “innately” smarter progress faster than those who come in behind, so the end result of the teaching is that differences among the students are amplified, not reduced. Whether the differences in the students coming in are due to prior practice, prior teaching, or genetics is not really knowable, but also not really relevant.
I agree. It’s not really knowable where the difference comes from and it’s not really relevant. The point of my Blog@CACM post is: we can do better. If we can teach spatial ability and subitizing, two skills that have a much stronger claim to being innate than programming, then we can certainly teach people to program better.
If we follow common practice and it’s unsuccessful, it’s not surprising that we think, “I tried. I explained carefully. I gave interesting assignments. I gave good feedback. It’s got to be an innate trait. Some students are just born wired to program.”
I watch my children taking CS classes, along with English, Chemistry, Physics, and Biology classes. In the CS classes, they code. In the other classes, they do on-line interactive exercises, they write papers, they use simulations, they solve problems by-hand. Back in CS, the only activity is coding with feedback. If we only have one technique for teaching, we shouldn’t be surprised if it doesn’t always work
Here’s a reasonable hypothesis: We get poor results because we use ineffective teaching methods. If we want to teach CS more effectively, we need to learn and develop better methods. If we don’t strive for better methods, we’re not going to get better results.
A first step is to be more methodical with how we choose methods. In a 2011 paper by Davide Fossati and me (see here), we found that CS teachers generally don’t use empirical evidence when making changes in how we teach. We act from our intuition, but our students aren’t like us, and our intuition is not a good indicator of what our students need.
Next, we need to experiment with more methods. We want to get to a place where we identify known problems in our students’ understanding, and then used well-supported methods that help students develop more robust understandings. We probably don’t have a wide range of different techniques for teaching assignment, iteration, recursion, and similar concepts? We should try well-supported techniques like pair programming, peer instruction, or Media Computation (see CACM article on these). We should try to expand our techniques repertoire beyond simply grinding at code. We could try techniques like worked examples, Problets, CodingBat, games with learning outcomes like Wu’s Castle, multiple choice questions like in Gidget, the Parson’s Problems in the Runestone Interactive ebooks, or even computing without computers as in CS Unplugged.
We do not make it easy for CS teachers to pick up new, better, more proven methods. Sure, there are the SIGCSE Symposium proceedings, but that’s not a systematic presentation of what to use when. This is on the CS education research community to do better. But it’s also on the CS teaching community to demand better, to seek out better methods and studies of techniques.
If we taught better, there are a lot of problems in CS that we might impact. We might bring in a more diverse group of students. We might make our current students more successful. We might change attitudes about computing. Perhaps most importantly, maybe we as teachers will come to believe that we can teach anyone to program.
April Heard at Georgia Tech built this map for us about where AP CS is taught in the state of Georgia. Some of it is totally to be expected. Most of the schools are in the Atlanta region, with a couple in Columbus, a handful in Macon, and a few more in Augusta and Savannah area.
But what’s disappointing is that huge swath in the south of the state with nothing. Not a single school south of Columbus and west of Brunswick. In terms of area, it’s about 1/3 of the state. Albany is home to Albany State University, the largest HBCU in Georgia. No AP CS at all there. And Georgia is one of the top states for having AP CS.
Sure, there might be some non-AP CS teachers in South Georgia, but we’re talking a handful. Not double, and certainly not a magnitude more than AP CS.
I suspect that much of the US looks like this, with wide stretches without a CS teacher in sight. April is continuing to generate these maps for states that we’re working with in ECEP. Here’s California, with big empty stretches.
Tom McKlin just generated this new map, which overlays the AP CS teacher data on top of mean household income in a school district. The correlation is very high — districts with money have AP CS, and those that don’t, don’t.
Fun and interesting blog addressing the belief that mathematics is necessary for programming, a misconception that Nathan Ensmenger claims has reduced the percentage of women in computing. Sarah Mei goes into some depth addressing (and dispensing with) each of the three claims below
Specifically, learning to program is more like learning a new language than it is like doing math problems. And the experience of programming today, in industry, is more about language than it is about math.And my next thought, of course, was why doesn’t anyone else think this? Why do we still have this idea that math skills indicate programming potential, while language skills mean you should go into poli sci?Well, when I feel out of my depth, I usually start by looking for “official” opinions. So I looked for relevant academic research.
I found absolutely none, which is pretty flabbergasting. I found a lot of opinions, both from computer science educators, and from people in industry. Perhaps within academia, the link between math and programming is considered such an obvious truth that it isn’t worth confirming with research.It seems more likely, though, that this research exists, but not under the search terms I tried. Please let me know if you are aware of relevant papers.In the meantime, if we can’t have data, we can at least examine the conversations people have on this topic. Here are some things people often say when asserting that people must be good at math to be good developers.Generally, they fall into three categories:
1. “You need to know math to be a good programmer.”
2. “You need to learn math to get the skills you need for programming.”
3. “Plenty of programming is still math!”
A really fascinating piece about all the problems that Hoboken had with their one-laptop-per-child program. The quote listed below describes the problems with breakage and pornography. The article goes on to describe problems with too little memory, bad educational software, wireless network overload, anti-virus expense, and teacher professional learning costs. I firmly believe in the vision of one-laptop-per-student. I also firmly believe that it’s crazy-expensive and hard to make work right, especially in large school districts.
We had “half a dozen kids in a day, on a regular basis, bringing laptops down, going ‘my books fell on top of it, somebody sat on it, I dropped it,’ ” said Crocamo. Screens cracked. Batteries died. Keys popped off. Viruses attacked. Crocamo found that teenagers with laptops are still… teenagers. “We bought laptops that had reinforced hard-shell cases so that we could try to offset some of the damage these kids were going to do,” said Crocamo. “I was pretty impressed with some of the damage they did anyway. Some of the laptops would come back to us completely destroyed.”
Crocamo’s time was also eaten up with theft. Despite the anti-theft tracking software he installed, some laptops were never found. Crocamo had to file police reports and even testify in court.
Hoboken school officials were also worried they couldn’t control which websites students would visit. Crocamo installed software called Net Nanny to block pornography, gaming sites and Facebook. He disabled the built-in web cameras. He even installed software to block students from undoing these controls. But Crocamo says students found forums on the Internet that showed them how to access everything.“There is no more determined hacker, so to speak, than a 12-year-old who has a computer,” said Crocamo.
I’ve been thrilled to see the legislative progress in California around CS education issues. The governor has now signed Senate Bill 1200 which starts the process of CS counting for UC/CSU admissions. Dan Lewis’s article in The Mercury News tempered that enthusiasm (linked below). I wasn’t aware that UC was pushing back, nor how the number of CS classes and teachers is dropping in California. Lots more work to do there.
The Legislature just passed two bills to address these issues. Senate Bill 1200 allows but does not require the University of California to count computer science toward the math requirements for admission. However, there’s been a lot of push back from UC on this, so for now, all we really have is an expression of intent from the Legislature. Thankfully, AB 1764 allows high schools to count computer science toward graduation requirements. Of course, that may not mean much for students applying to UC.
For these reasons, computer science isn’t a priority for students. Nor is it a priority for schools when determining course offerings based on limited budgets: While California high school enrollment has risen 15 percent since 2000, the number of classes on computer science or programming fell 34 percent, and the number of teachers assigned to those courses fell 51 percent.
A new policy brief was just released from the California STEM Learning Network on the state of CS education in California (see here). California actually lags behind the rest of the US on some important indicators like number of CS degrees conferred. That’s pretty scary for Silicon Valley.